summaryrefslogtreecommitdiffstats
path: root/fastboot
diff options
context:
space:
mode:
authorSasha Levitskiy <sanek@google.com>2014-05-05 19:43:15 -0700
committerSasha Levitskiy <sanek@google.com>2014-05-07 11:43:12 -0700
commit782111b3bc5d372afc8d66ab6023e834b7c23b88 (patch)
tree77d74cb55bd721c14b9968ffe52aa6c52fff632c /fastboot
parent7112e4c7cb9168ddaee418c4ed4b0c54b475f99e (diff)
downloadcore-782111b3bc5d372afc8d66ab6023e834b7c23b88.tar.gz
core-782111b3bc5d372afc8d66ab6023e834b7c23b88.tar.bz2
core-782111b3bc5d372afc8d66ab6023e834b7c23b88.zip
System: Fastboot: warning fixit, misc bugs and cleanup.
Change-Id: Ib8517a852977962de3f05c879ba7dce89bcef644 Signed-off-by: Sasha Levitskiy <sanek@google.com>
Diffstat (limited to 'fastboot')
-rw-r--r--fastboot/engine.c6
-rw-r--r--fastboot/fastboot.c99
-rw-r--r--fastboot/fastboot.h9
-rw-r--r--fastboot/usbtest.c6
4 files changed, 60 insertions, 60 deletions
diff --git a/fastboot/engine.c b/fastboot/engine.c
index 5a6709bc2..7d440e073 100644
--- a/fastboot/engine.c
+++ b/fastboot/engine.c
@@ -66,7 +66,7 @@ struct Action
char cmd[CMD_SIZE];
const char *prod;
void *data;
- unsigned size;
+ size_t size;
const char *msg;
int (*func)(Action *a, int status, char *resp);
@@ -169,7 +169,7 @@ void fb_queue_erase(const char *ptn)
a->msg = mkmsg("erasing '%s'", ptn);
}
-void fb_queue_flash(const char *ptn, void *data, unsigned sz)
+void fb_queue_flash(const char *ptn, void *data, size_t sz)
{
Action *a;
@@ -182,7 +182,7 @@ void fb_queue_flash(const char *ptn, void *data, unsigned sz)
a->msg = mkmsg("writing '%s'", ptn);
}
-void fb_queue_flash_sparse(const char *ptn, struct sparse_file *s, unsigned sz)
+void fb_queue_flash_sparse(const char *ptn, struct sparse_file *s, size_t sz)
{
Action *a;
diff --git a/fastboot/fastboot.c b/fastboot/fastboot.c
index 4d3e0afd4..eeab2e93b 100644
--- a/fastboot/fastboot.c
+++ b/fastboot/fastboot.c
@@ -92,8 +92,8 @@ enum fb_buffer_type {
struct fastboot_buffer {
enum fb_buffer_type type;
+ size_t sz;
void *data;
- unsigned int sz;
};
static struct {
@@ -152,7 +152,7 @@ char *find_item(const char *item, const char *product)
return strdup(path);
}
-static int64_t file_size(int fd)
+static ssize_t file_size(int fd)
{
struct stat st;
int ret;
@@ -162,15 +162,12 @@ static int64_t file_size(int fd)
return ret ? -1 : st.st_size;
}
-static void *load_fd(int fd, unsigned *_sz)
+static void *load_fd(int fd, size_t *_sz)
{
- char *data;
- int sz;
+ char *data = NULL;
+ ssize_t sz = file_size(fd);
int errno_tmp;
- data = 0;
-
- sz = file_size(fd);
if (sz < 0) {
goto oops;
}
@@ -192,7 +189,7 @@ oops:
return 0;
}
-static void *load_file(const char *fn, unsigned *_sz)
+static void *load_file(const char *fn, size_t *_sz)
{
int fd;
@@ -381,34 +378,34 @@ void *load_bootable_image(const char *kernel, const char *ramdisk,
return bdata;
}
-void *unzip_file(zipfile_t zip, const char *name, unsigned *sz)
+void *unzip_file(zipfile_t zip, const char *name, size_t *sz)
{
void *data;
- zipentry_t entry;
- unsigned datasz;
+ zipentry_t entry = lookup_zipentry(zip, name);
+ size_t zentrysz;
+ size_t datasz;
- entry = lookup_zipentry(zip, name);
if (entry == NULL) {
fprintf(stderr, "archive does not contain '%s'\n", name);
- return 0;
+ return NULL;
}
- *sz = get_zipentry_size(entry);
+ zentrysz = get_zipentry_size(entry);
- datasz = *sz * 1.001;
+ datasz = zentrysz * 1.001;
data = malloc(datasz);
- if(data == 0) {
- fprintf(stderr, "failed to allocate %d bytes\n", *sz);
- return 0;
+ if(data == NULL) {
+ fprintf(stderr, "failed to allocate %zu bytes\n", datasz);
+ return NULL;
}
if (decompress_zipentry(entry, data, datasz)) {
fprintf(stderr, "failed to unzip '%s' from archive\n", name);
free(data);
- return 0;
+ return NULL;
}
-
+ *sz = zentrysz;
return data;
}
@@ -416,24 +413,25 @@ static int unzip_to_file(zipfile_t zip, char *name)
{
int fd;
char *data;
- unsigned sz;
+ size_t sz;
fd = fileno(tmpfile());
if (fd < 0) {
- return -1;
+ return fd;
}
data = unzip_file(zip, name, &sz);
- if (data == 0) {
+ if (data == NULL) {
return -1;
}
- if (write(fd, data, sz) != sz) {
+ if (write(fd, data, sz) != (ssize_t)sz) {
fd = -1;
+ } else {
+ lseek(fd, 0, SEEK_SET);
}
free(data);
- lseek(fd, 0, SEEK_SET);
return fd;
}
@@ -514,11 +512,10 @@ static int setup_requirement_line(char *name)
return 0;
}
-static void setup_requirements(char *data, unsigned sz)
+static void setup_requirements(char *data, size_t sz)
{
- char *s;
+ char *s = data;
- s = data;
while (sz-- > 0) {
if(*s == '\n') {
*s++ = 0;
@@ -628,14 +625,15 @@ static int needs_erase(const char *part)
static int load_buf_fd(usb_handle *usb, int fd,
struct fastboot_buffer *buf)
{
- int64_t sz64;
- void *data;
+ ssize_t f_size = file_size(fd);
+ void *data = NULL;
int64_t limit;
+ int64_t sz64;
-
- sz64 = file_size(fd);
- if (sz64 < 0) {
- return -1;
+ if (f_size < 0) {
+ return f_size;
+ } else {
+ sz64 = f_size;
}
lseek(fd, 0, SEEK_SET);
@@ -648,12 +646,12 @@ static int load_buf_fd(usb_handle *usb, int fd,
buf->type = FB_BUFFER_SPARSE;
buf->data = s;
} else {
- unsigned int sz;
+ size_t sz;
data = load_fd(fd, &sz);
- if (data == 0) return -1;
+ if (data == NULL) return -1;
buf->type = FB_BUFFER;
- buf->data = data;
buf->sz = sz;
+ buf->data = data;
}
return 0;
@@ -704,10 +702,11 @@ void do_flash(usb_handle *usb, const char *pname, const char *fname)
void do_update_signature(zipfile_t zip, char *fn)
{
- void *data;
- unsigned sz;
- data = unzip_file(zip, fn, &sz);
- if (data == 0) return;
+ size_t sz;
+ void *data = unzip_file(zip, fn, &sz);
+ if (data == NULL) {
+ die("can't unzip '%s'", fn);
+ }
fb_queue_download("signature", data, sz);
fb_queue_command("signature", "installing signature");
}
@@ -717,12 +716,12 @@ void do_update(usb_handle *usb, char *fn, int erase_first)
void *zdata;
unsigned zsize;
void *data;
- unsigned sz;
+ size_t sz = 0;
zipfile_t zip;
int fd;
int rc;
struct fastboot_buffer buf;
- int i;
+ size_t i;
queue_info_dump();
@@ -735,11 +734,11 @@ void do_update(usb_handle *usb, char *fn, int erase_first)
if(zip == 0) die("failed to access zipdata in '%s'");
data = unzip_file(zip, "android-info.txt", &sz);
- if (data == 0) {
+ if (data == NULL) {
char *tmp;
/* fallback for older zipfiles */
data = unzip_file(zip, "android-product.txt", &sz);
- if ((data == 0) || (sz < 1)) {
+ if ((data == NULL) || (sz < 1)) {
die("update package has no android-info.txt or android-product.txt");
}
tmp = malloc(sz + 128);
@@ -775,7 +774,7 @@ void do_update(usb_handle *usb, char *fn, int erase_first)
void do_send_signature(char *fn)
{
void *data;
- unsigned sz;
+ size_t sz;
char *xtn;
xtn = strrchr(fn, '.');
@@ -794,9 +793,9 @@ void do_flashall(usb_handle *usb, int erase_first)
{
char *fname;
void *data;
- unsigned sz;
+ size_t sz;
struct fastboot_buffer buf;
- int i;
+ size_t i;
queue_info_dump();
@@ -978,7 +977,7 @@ int main(int argc, char **argv)
int wants_reboot_bootloader = 0;
int erase_first = 1;
void *data;
- unsigned sz;
+ size_t sz;
int status;
int c;
int r;
diff --git a/fastboot/fastboot.h b/fastboot/fastboot.h
index fc5d4f45f..30e79c1a2 100644
--- a/fastboot/fastboot.h
+++ b/fastboot/fastboot.h
@@ -29,6 +29,7 @@
#ifndef _FASTBOOT_H_
#define _FASTBOOT_H_
+#include <stdlib.h>
#include "usb.h"
struct sparse_file;
@@ -36,7 +37,7 @@ struct sparse_file;
/* protocol.c - fastboot protocol */
int fb_command(usb_handle *usb, const char *cmd);
int fb_command_response(usb_handle *usb, const char *cmd, char *response);
-int fb_download_data(usb_handle *usb, const void *data, unsigned size);
+int fb_download_data(usb_handle *usb, const void *data, size_t size);
int fb_download_data_sparse(usb_handle *usb, struct sparse_file *s);
char *fb_get_error(void);
@@ -47,16 +48,16 @@ char *fb_get_error(void);
int fb_getvar(struct usb_handle *usb, char *response, const char *fmt, ...);
int fb_format_supported(usb_handle *usb, const char *partition, const char *type_override);
void fb_queue_flash(const char *ptn, void *data, unsigned sz);
-void fb_queue_flash_sparse(const char *ptn, struct sparse_file *s, unsigned sz);
+void fb_queue_flash_sparse(const char *ptn, struct sparse_file *s, size_t sz);
void fb_queue_erase(const char *ptn);
void fb_queue_format(const char *ptn, int skip_if_not_supported, unsigned int max_chunk_sz);
void fb_queue_require(const char *prod, const char *var, int invert,
unsigned nvalues, const char **value);
void fb_queue_display(const char *var, const char *prettyname);
-void fb_queue_query_save(const char *var, char *dest, unsigned dest_size);
+void fb_queue_query_save(const char *var, char *dest, size_t dest_size);
void fb_queue_reboot(void);
void fb_queue_command(const char *cmd, const char *msg);
-void fb_queue_download(const char *name, void *data, unsigned size);
+void fb_queue_download(const char *name, void *data, size_t size);
void fb_queue_notice(const char *notice);
void fb_queue_wait_for_disconnect(void);
int fb_execute_queue(usb_handle *usb);
diff --git a/fastboot/usbtest.c b/fastboot/usbtest.c
index b8fb9e220..488db06d3 100644
--- a/fastboot/usbtest.c
+++ b/fastboot/usbtest.c
@@ -35,8 +35,8 @@
#include "usb.h"
-static unsigned arg_size = 4096;
-static unsigned arg_count = 4096;
+static int arg_size = 4096;
+static int arg_count = 4096;
long long NOW(void)
{
@@ -134,7 +134,7 @@ struct
{ "send", match_null, test_null, "send to null interface" },
{ "recv", match_zero, test_zero, "recv from zero interface" },
{ "loop", match_loop, 0, "exercise loopback interface" },
- {},
+ { NULL, NULL, NULL, NULL },
};
int usage(void)