From: Marcus Brinkmann Date: Wed, 20 Jan 2010 12:24:35 +0000 (+0100) Subject: Fix buffer underrun and clarify condition. X-Git-Tag: dbus-1.3.1~120^2~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=30af0a1c5f9086a549837aeaac295ca36c1162a8;p=thirdparty%2Fdbus.git Fix buffer underrun and clarify condition. --- diff --git a/dbus/dbus-sysdeps-win.c b/dbus/dbus-sysdeps-win.c index 300e9b120..f45d809b4 100644 --- a/dbus/dbus-sysdeps-win.c +++ b/dbus/dbus-sysdeps-win.c @@ -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; }