mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-04 12:20:42 +09:00
sftp: Don't leak owner and group in sftp_parse_attr_4.
This commit is contained in:
21
src/sftp.c
21
src/sftp.c
@@ -966,12 +966,23 @@ static sftp_attributes sftp_parse_attr_4(sftp_session sftp, ssh_buffer buf,
|
||||
}
|
||||
|
||||
if (flags & SSH_FILEXFER_ATTR_OWNERGROUP) {
|
||||
if((owner = buffer_get_ssh_string(buf)) == NULL ||
|
||||
(attr->owner = ssh_string_to_char(owner)) == NULL) {
|
||||
owner = buffer_get_ssh_string(buf);
|
||||
if (owner == NULL) {
|
||||
break;
|
||||
}
|
||||
if ((group = buffer_get_ssh_string(buf)) == NULL ||
|
||||
(attr->group = ssh_string_to_char(group)) == NULL) {
|
||||
attr->owner = ssh_string_to_char(owner);
|
||||
string_free(owner);
|
||||
if (attr->owner == NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
group = buffer_get_ssh_string(buf);
|
||||
if (group == NULL) {
|
||||
break;
|
||||
}
|
||||
attr->group = ssh_string_to_char(group);
|
||||
string_free(group);
|
||||
if (attr->group == NULL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1074,8 +1085,6 @@ static sftp_attributes sftp_parse_attr_4(sftp_session sftp, ssh_buffer buf,
|
||||
|
||||
if (ok == 0) {
|
||||
/* break issued somewhere */
|
||||
ssh_string_free(owner);
|
||||
ssh_string_free(group);
|
||||
ssh_string_free(attr->acl);
|
||||
ssh_string_free(attr->extended_type);
|
||||
ssh_string_free(attr->extended_data);
|
||||
|
||||
Reference in New Issue
Block a user