Skip to content

Commit

Permalink
Fix a bunch of small system/core bugs.
Browse files Browse the repository at this point in the history
Missing frees in:
  adb/file_sync_client.c
  fastboot/fastboot.c
  libsparse/output_file.c

Missing closedirs in:
  adb/file_sync_service.c
  cpio/mkbootfs.c
  libcutils/dir_hash.c

Potential buffer overrun in:
  gpttool/gpttool.c

Incorrect NULL check in:
  libsparse/backed_block.c

Bug: https://code.google.com/p/android/issues/detail?id=61564
Change-Id: If97838a9e73a77aef7f416c31c237ce1fca4ce21
  • Loading branch information
enh-google committed Oct 29, 2013
1 parent 98f87d9 commit 14e28d3
Show file tree
Hide file tree
Showing 9 changed files with 17 additions and 4 deletions.
2 changes: 1 addition & 1 deletion adb/file_sync_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -642,8 +642,8 @@ static int local_build_list(copyinfo **filelist,
ci = mkcopyinfo(lpath, rpath, name, 0);
if(lstat(ci->src, &st)) {
fprintf(stderr,"cannot stat '%s': %s\n", ci->src, strerror(errno));
free(ci);
closedir(d);

return -1;
}
if(!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode)) {
Expand Down
1 change: 1 addition & 0 deletions adb/file_sync_service.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ static int do_list(int s, const char *path)

if(writex(s, &msg.dent, sizeof(msg.dent)) ||
writex(s, de->d_name, len)) {
closedir(d);
return -1;
}
}
Expand Down
2 changes: 2 additions & 0 deletions cpio/mkbootfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,8 @@ static void _archive_dir(char *in, char *out, int ilen, int olen)
free(names[i]);
}
free(names);

closedir(d);
}

static void _archive(char *in, char *out, int ilen, int olen)
Expand Down
1 change: 1 addition & 0 deletions fastboot/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../mkbootimg \
LOCAL_SRC_FILES := protocol.c engine.c bootimg.c fastboot.c util.c
LOCAL_MODULE := fastboot
LOCAL_MODULE_TAGS := debug
LOCAL_CFLAGS += -std=gnu99

ifeq ($(HOST_OS),linux)
LOCAL_SRC_FILES += usb_linux.c util_linux.c
Expand Down
8 changes: 7 additions & 1 deletion fastboot/fastboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,13 @@ static int setup_requirement_line(char *name)

for(n = 0; n < count; n++) {
out[n] = strdup(strip(val[n]));
if (out[n] == 0) return -1;
if (out[n] == 0) {
for(size_t i = 0; i < n; ++i) {
free((char*) out[i]);
}
free(out);
return -1;
}
}

fb_queue_require(prod, name, invert, n, out);
Expand Down
2 changes: 1 addition & 1 deletion gpttool/gpttool.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ void show(struct ptable *ptbl)
{
struct efi_entry *entry = ptbl->entry;
unsigned n, m;
char name[EFI_NAMELEN];
char name[EFI_NAMELEN + 1];

fprintf(stderr,"ptn start block end block name\n");
fprintf(stderr,"---- ------------- ------------- --------------------\n");
Expand Down
1 change: 1 addition & 0 deletions libcutils/dir_hash.c
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ static int recurse(HashAlgorithm algorithm, const char *directory_path,

free(name);
free(node);
closedir(d);
return -1;
}

Expand Down
2 changes: 1 addition & 1 deletion libsparse/backed_block.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ int backed_block_split(struct backed_block_list *bbl, struct backed_block *bb,
}

new_bb = malloc(sizeof(struct backed_block));
if (bb == NULL) {
if (new_bb == NULL) {
return -ENOMEM;
}

Expand Down
2 changes: 2 additions & 0 deletions libsparse/output_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -722,10 +722,12 @@ int write_fd_chunk(struct output_file *out, unsigned int len,
}
pos = lseek64(fd, offset, SEEK_SET);
if (pos < 0) {
free(data);
return -errno;
}
ret = read_all(fd, data, len);
if (ret < 0) {
free(data);
return ret;
}
ptr = data;
Expand Down

0 comments on commit 14e28d3

Please sign in to comment.