[PATCH v4 06/12] libusbg: Add error handling to gadget_read_string().

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux