Add error handling when gadget_read_buf() returns NULL. If read of string fails, the string should be set as empty. Change-Id: I56367c3820e3efae89f533639225e59f86a77d2b Signed-off-by: Krzysztof Opasiak <k.opasiak@xxxxxxxxxxx> --- src/usbg.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/usbg.c b/src/usbg.c index a7f8780..e8527b2 100644 --- a/src/usbg.c +++ b/src/usbg.c @@ -121,11 +121,18 @@ static int usbg_read_int(char *path, char *name, char *file, int base) static void usbg_read_string(char *path, char *name, char *file, char *buf) { - char *p; + char *p = NULL; + + p = usbg_read_buf(path, name, file, buf); + /* Check whether read was successful */ + if (p != NULL) { + if ((p = strchr(buf, '\n')) != NULL) + *p = '\0'; + } else { + /* Set this as empty string */ + *buf = '\0'; + } - usbg_read_buf(path, name, file, buf); - if ((p = strchr(buf, '\n')) != NULL) - *p = '\0'; } static void usbg_write_buf(char *path, char *name, char *file, char *buf) @@ -185,13 +192,16 @@ static void usbg_parse_function_attrs(struct function *f) case F_RNDIS: usbg_read_string(f->path, f->name, "dev_addr", str_addr); addr = ether_aton(str_addr); - memcpy(&f->attr.net.dev_addr, addr, 6); + if (addr) + memcpy(&f->attr.net.dev_addr, addr, sizeof(struct ether_addr)); + usbg_read_string(f->path, f->name, "host_addr", str_addr); addr = ether_aton(str_addr); - memcpy(&f->attr.net.host_addr, addr, 6); + if(addr) + memcpy(&f->attr.net.host_addr, addr, sizeof(struct ether_addr)); + usbg_read_string(f->path, f->name, "ifname", f->attr.net.ifname); f->attr.net.qmult = usbg_read_dec(f->path, f->name, "qmult"); - break; case F_PHONET: usbg_read_string(f->path, f->name, "ifname", f->attr.phonet.ifname); break; -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html