Fix file descriptor leak when opening invalid archives.
Also add -Wunreachable-code to the set of compiler flags, otherwise noreturn becomes considerably less useful. bug: https://code.google.com/p/android/issues/detail?id=171099 Change-Id: I9a95d45633c731c7046d4e4a39844d9cebfd1718
This commit is contained in:
parent
55431d9745
commit
241bcf05e0
3 changed files with 5 additions and 2 deletions
|
|
@ -23,7 +23,7 @@ LOCAL_SRC_FILES := protocol.c engine.c bootimg_utils.cpp fastboot.cpp util.c fs.
|
||||||
LOCAL_MODULE := fastboot
|
LOCAL_MODULE := fastboot
|
||||||
LOCAL_MODULE_TAGS := debug
|
LOCAL_MODULE_TAGS := debug
|
||||||
LOCAL_CONLYFLAGS += -std=gnu99
|
LOCAL_CONLYFLAGS += -std=gnu99
|
||||||
LOCAL_CFLAGS += -Wall -Wextra -Werror
|
LOCAL_CFLAGS += -Wall -Wextra -Werror -Wunreachable-code
|
||||||
|
|
||||||
ifeq ($(HOST_OS),linux)
|
ifeq ($(HOST_OS),linux)
|
||||||
LOCAL_SRC_FILES += usb_linux.c util_linux.c
|
LOCAL_SRC_FILES += usb_linux.c util_linux.c
|
||||||
|
|
|
||||||
|
|
@ -701,12 +701,14 @@ void do_update(usb_handle *usb, const char *filename, int erase_first)
|
||||||
ZipArchiveHandle zip;
|
ZipArchiveHandle zip;
|
||||||
int error = OpenArchive(filename, &zip);
|
int error = OpenArchive(filename, &zip);
|
||||||
if (error != 0) {
|
if (error != 0) {
|
||||||
|
CloseArchive(zip);
|
||||||
die("failed to open zip file '%s': %s", filename, ErrorCodeString(error));
|
die("failed to open zip file '%s': %s", filename, ErrorCodeString(error));
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned sz;
|
unsigned sz;
|
||||||
void* data = unzip_file(zip, "android-info.txt", &sz);
|
void* data = unzip_file(zip, "android-info.txt", &sz);
|
||||||
if (data == 0) {
|
if (data == 0) {
|
||||||
|
CloseArchive(zip);
|
||||||
die("update package '%s' has no android-info.txt", filename);
|
die("update package '%s' has no android-info.txt", filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -717,6 +719,7 @@ void do_update(usb_handle *usb, const char *filename, int erase_first)
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
if (images[i].is_optional)
|
if (images[i].is_optional)
|
||||||
continue;
|
continue;
|
||||||
|
CloseArchive(zip);
|
||||||
die("update package missing %s", images[i].img_name);
|
die("update package missing %s", images[i].img_name);
|
||||||
}
|
}
|
||||||
fastboot_buffer buf;
|
fastboot_buffer buf;
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ int fb_queue_is_empty(void);
|
||||||
/* util stuff */
|
/* util stuff */
|
||||||
double now();
|
double now();
|
||||||
char *mkmsg(const char *fmt, ...);
|
char *mkmsg(const char *fmt, ...);
|
||||||
void die(const char *fmt, ...);
|
__attribute__((__noreturn__)) void die(const char *fmt, ...);
|
||||||
|
|
||||||
void get_my_path(char *path);
|
void get_my_path(char *path);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue