<div dir="ltr">Sorry, sent the old patch instead. Will upload a new one.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 15, 2017 at 9:09 AM, Ben Chan <span dir="ltr"><<a href="mailto:benchan@chromium.org" target="_blank">benchan@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">get_device_ids() in mm-kernel-device-udev.c accepts a NULL 'vendor' or<br>
'product' argument, but the current implementation could result in a<br>
potential NULL dereferences of the 'vendor' argument. Given that<br>
get_device_ids() is a local helper and its only caller provides a<br>
non-NULL 'vendor' and 'product' argument, this patch removes the NULL<br>
checks (i.e. get_device_ids() expects non-NULL 'vendor' and 'product').<br>
<br>
This patch also rearranges the code such that the 'vendor' argument is<br>
updated only when the function returns TRUE, just like how the 'product'<br>
argument is handled.<br>
---<br>
 src/kerneldevice/mm-kernel-<wbr>device-udev.c | 16 ++++++----------<br>
 1 file changed, 6 insertions(+), 10 deletions(-)<br>
<br>
diff --git a/src/kerneldevice/mm-kernel-<wbr>device-udev.c b/src/kerneldevice/mm-kernel-<wbr>device-udev.c<br>
index e8763f7e..e2c2bf34 100644<br>
--- a/src/kerneldevice/mm-kernel-<wbr>device-udev.c<br>
+++ b/src/kerneldevice/mm-kernel-<wbr>device-udev.c<br>
@@ -119,23 +119,19 @@ get_device_ids (GUdevDevice *device,<br>
     if (strlen (vid) != 4)<br>
         goto out;<br>
<br>
-    if (vendor) {<br>
-        *vendor = (guint16) (mm_utils_hex2byte (vid + 2) & 0xFF);<br>
-        *vendor |= (guint16) ((mm_utils_hex2byte (vid) & 0xFF) << 8);<br>
-    }<br>
-<br>
     if (!pid)<br>
         pid = g_udev_device_get_property (device, "ID_MODEL_ID");<br>
-    if (!pid) {<br>
-        *vendor = 0;<br>
+    if (!pid)<br>
         goto out;<br>
-    }<br>
<br>
     if (strncmp (pid, "0x", 2) == 0)<br>
         pid += 2;<br>
-    if (strlen (pid) != 4) {<br>
-        *vendor = 0;<br>
+    if (strlen (pid) != 4)<br>
         goto out;<br>
+<br>
+    if (vendor) {<br>
+        *vendor = (guint16) (mm_utils_hex2byte (vid + 2) & 0xFF);<br>
+        *vendor |= (guint16) ((mm_utils_hex2byte (vid) & 0xFF) << 8);<br>
     }<br>
<br>
     if (product) {<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.14.0.434.g98096fd7a8-goog<br>
<br>
______________________________<wbr>_________________<br>
ModemManager-devel mailing list<br>
<a href="mailto:ModemManager-devel@lists.freedesktop.org">ModemManager-devel@lists.<wbr>freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/modemmanager-<wbr>devel</a><br>
</font></span></blockquote></div><br></div>