- In DirList, initialize stInfo.ptrHead of the dummy node to avoid invalid memory access. Fixes regression in cmd:batch

svn path=/trunk/; revision=68846
This commit is contained in:
Thomas Faber 2015-08-28 10:51:10 +00:00
parent 2f9a846dcf
commit 4e5f69d4d1

View file

@ -1376,6 +1376,7 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
WARN("DEBUG: Cannot allocate memory for ptrStartNode!\n"); WARN("DEBUG: Cannot allocate memory for ptrStartNode!\n");
return 1; /* Error cannot allocate memory for 1st object */ return 1; /* Error cannot allocate memory for 1st object */
} }
ptrStartNode->stInfo.ptrHead = NULL;
ptrNextNode = ptrStartNode; ptrNextNode = ptrStartNode;
/*Checking ir szPath is a File with/wout extension*/ /*Checking ir szPath is a File with/wout extension*/
@ -1478,8 +1479,8 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
ptrCurNode = &(*ptrCurNode)->ptrNext; ptrCurNode = &(*ptrCurNode)->ptrNext;
} }
FindClose(hStreams); FindClose(hStreams);
*ptrCurNode = NULL; *ptrCurNode = NULL;
} }
} }
@ -1538,12 +1539,12 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
dwCount = 0; dwCount = 0;
while (ptrNextNode->ptrNext) while (ptrNextNode->ptrNext)
{ {
*(ptrFileArray + dwCount) = &ptrNextNode->ptrNext->stInfo; ptrFileArray[dwCount] = &ptrNextNode->ptrNext->stInfo;
ptrNextNode = ptrNextNode->ptrNext; ptrNextNode = ptrNextNode->ptrNext;
dwCount++; dwCount++;
} }
/* Sort Data if requested*/ /* Sort Data if requested */
if (lpFlags->stOrderBy.sCriteriaCount > 0) if (lpFlags->stOrderBy.sCriteriaCount > 0)
QsortFiles(ptrFileArray, 0, dwCount-1, lpFlags); QsortFiles(ptrFileArray, 0, dwCount-1, lpFlags);