mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Use FLEXIBLE_ARRAY_MEMBER in Windows-specific code.
Be a tad more paranoid about overlength input, too.
This commit is contained in:
parent
82a532b34d
commit
332f02f88b
@ -143,7 +143,7 @@ typedef struct
|
||||
WORD SubstituteNameLength;
|
||||
WORD PrintNameOffset;
|
||||
WORD PrintNameLength;
|
||||
WCHAR PathBuffer[1];
|
||||
WCHAR PathBuffer[FLEXIBLE_ARRAY_MEMBER];
|
||||
} REPARSE_JUNCTION_DATA_BUFFER;
|
||||
|
||||
#define REPARSE_JUNCTION_DATA_BUFFER_HEADER_SIZE \
|
||||
@ -160,7 +160,7 @@ pgsymlink(const char *oldpath, const char *newpath)
|
||||
{
|
||||
HANDLE dirhandle;
|
||||
DWORD len;
|
||||
char buffer[MAX_PATH * sizeof(WCHAR) + sizeof(REPARSE_JUNCTION_DATA_BUFFER)];
|
||||
char buffer[MAX_PATH * sizeof(WCHAR) + offsetof(REPARSE_JUNCTION_DATA_BUFFER, PathBuffer)];
|
||||
char nativeTarget[MAX_PATH];
|
||||
char *p = nativeTarget;
|
||||
REPARSE_JUNCTION_DATA_BUFFER *reparseBuf = (REPARSE_JUNCTION_DATA_BUFFER *) buffer;
|
||||
@ -174,10 +174,10 @@ pgsymlink(const char *oldpath, const char *newpath)
|
||||
return -1;
|
||||
|
||||
/* make sure we have an unparsed native win32 path */
|
||||
if (memcmp("\\??\\", oldpath, 4))
|
||||
sprintf(nativeTarget, "\\??\\%s", oldpath);
|
||||
if (memcmp("\\??\\", oldpath, 4) != 0)
|
||||
snprintf(nativeTarget, sizeof(nativeTarget), "\\??\\%s", oldpath);
|
||||
else
|
||||
strcpy(nativeTarget, oldpath);
|
||||
strlcpy(nativeTarget, oldpath, sizeof(nativeTarget));
|
||||
|
||||
while ((p = strchr(p, '/')) != NULL)
|
||||
*p++ = '\\';
|
||||
@ -239,7 +239,7 @@ pgreadlink(const char *path, char *buf, size_t size)
|
||||
{
|
||||
DWORD attr;
|
||||
HANDLE h;
|
||||
char buffer[MAX_PATH * sizeof(WCHAR) + sizeof(REPARSE_JUNCTION_DATA_BUFFER)];
|
||||
char buffer[MAX_PATH * sizeof(WCHAR) + offsetof(REPARSE_JUNCTION_DATA_BUFFER, PathBuffer)];
|
||||
REPARSE_JUNCTION_DATA_BUFFER *reparseBuf = (REPARSE_JUNCTION_DATA_BUFFER *) buffer;
|
||||
DWORD len;
|
||||
int r;
|
||||
|
Loading…
Reference in New Issue
Block a user