Fix buffer underrun and clarify condition.
authorMarcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
Wed, 20 Jan 2010 12:24:35 +0000 (13:24 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Wed, 20 Jan 2010 13:42:14 +0000 (14:42 +0100)
dbus/dbus-sysdeps-win.c

index 300e9b1..f45d809 100644 (file)
@@ -3187,10 +3187,13 @@ _dbus_get_install_root(char *prefix, int len)
     //folder's name happens to end with the *bytes*
     //"\\bin"... (I.e. the second byte of some Han character and then
     //the Latin "bin", but that is not likely I think...
-    if (lastSlash - prefix > 3 && strncmp(lastSlash - 4, "\\bin", 4) == 0)
+    if (lastSlash - prefix >= 4 && strncmp(lastSlash - 4, "\\bin", 4) == 0)
         lastSlash[-3] = 0;
-    else if (lastSlash - prefix > 3 && (strncmp(lastSlash - 10, "\\bin\\Debug", 10) == 0 || strncmp(lastSlash - 10, "\\bin\\Release", 10) == 0))
+    else if (lastSlash - prefix >= 10 && strncmp(lastSlash - 10, "\\bin\\Debug", 10) == 0)
         lastSlash[-9] = 0;
+    else if (lastSlash - prefix >= 12 && strncmp(lastSlash - 12, "\\bin\\Release", 12) == 0)
+        lastSlash[-11] = 0;
+
     return TRUE;
 }