Christoph von Wittich : shlwapi: Avoid buffer overflow in PathCombineA.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jun 27 10:27:36 CDT 2014


Module: wine
Branch: master
Commit: f26874c523e56c59fd23f002e0d7cae9c4ab840c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f26874c523e56c59fd23f002e0d7cae9c4ab840c

Author: Christoph von Wittich <Christoph at ApiViewer.de>
Date:   Thu Jun 26 20:31:35 2014 +0200

shlwapi: Avoid buffer overflow in PathCombineA.

---

 dlls/shlwapi/path.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/dlls/shlwapi/path.c b/dlls/shlwapi/path.c
index 01e3ae7..5c7a88a 100644
--- a/dlls/shlwapi/path.c
+++ b/dlls/shlwapi/path.c
@@ -155,20 +155,21 @@ LPSTR WINAPI PathCombineA(LPSTR lpszDest, LPCSTR lpszDir, LPCSTR lpszFile)
   if (!lpszDest)
     return NULL;
   if (!lpszDir && !lpszFile)
-  {
-    lpszDest[0] = 0;
-    return NULL;
-  }
+    goto fail;
 
   if (lpszDir)
-    MultiByteToWideChar(CP_ACP,0,lpszDir,-1,szDir,MAX_PATH);
+    if (!MultiByteToWideChar(CP_ACP,0,lpszDir,-1,szDir,MAX_PATH))
+      goto fail;
+
   if (lpszFile)
-    MultiByteToWideChar(CP_ACP,0,lpszFile,-1,szFile,MAX_PATH);
+    if (!MultiByteToWideChar(CP_ACP,0,lpszFile,-1,szFile,MAX_PATH))
+      goto fail;
 
   if (PathCombineW(szDest, lpszDir ? szDir : NULL, lpszFile ? szFile : NULL))
     if (WideCharToMultiByte(CP_ACP,0,szDest,-1,lpszDest,MAX_PATH,0,0))
       return lpszDest;
 
+fail:
   lpszDest[0] = 0;
   return NULL;
 }




More information about the wine-cvs mailing list