mirror of
https://github.com/reactos/reactos.git
synced 2024-10-30 11:35:58 +00:00
fix incorrect usage of alloca and a buffer overflow
svn path=/trunk/; revision=18540
This commit is contained in:
parent
2c226cd315
commit
18d6c8993b
|
@ -327,7 +327,6 @@ CreateStubs(FILE * SyscallDb,
|
|||
{
|
||||
char Line[INPUT_BUFFER_SIZE];
|
||||
char *NtSyscallName;
|
||||
char *ZwSyscallName = NULL;
|
||||
char *SyscallArguments;
|
||||
int SyscallId;
|
||||
unsigned StackBytes;
|
||||
|
@ -345,14 +344,6 @@ CreateStubs(FILE * SyscallDb,
|
|||
/* Make sure we really extracted something */
|
||||
if (NtSyscallName) {
|
||||
|
||||
/* Create the ZwXXX name, if requested */
|
||||
if (NeedsZw) {
|
||||
ZwSyscallName = alloca(strlen(NtSyscallName));
|
||||
strcpy(ZwSyscallName, NtSyscallName);
|
||||
ZwSyscallName[0] = 'Z';
|
||||
ZwSyscallName[1] = 'w';
|
||||
}
|
||||
|
||||
/* Create Usermode Stubs for Nt/Zw syscalls in each Usermode file */
|
||||
int i;
|
||||
for (i= 0; i < UserFiles; i++) {
|
||||
|
@ -364,18 +355,28 @@ CreateStubs(FILE * SyscallDb,
|
|||
SyscallId | Index);
|
||||
|
||||
/* If a Zw Version is needed (was specified), write it too */
|
||||
if (ZwSyscallName) WriteUserModeStub(UserModeFiles[i],
|
||||
ZwSyscallName,
|
||||
if (NeedsZw) {
|
||||
|
||||
NtSyscallName[0] = 'Z';
|
||||
NtSyscallName[1] = 'w';
|
||||
WriteUserModeStub(UserModeFiles[i],
|
||||
NtSyscallName,
|
||||
StackBytes,
|
||||
SyscallId | Index);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Create the Kernel coutnerparts (only Zw*, Nt* are the real functions!) */
|
||||
if (KernelModeFile) WriteKernelModeStub(KernelModeFile,
|
||||
ZwSyscallName,
|
||||
if (KernelModeFile) {
|
||||
|
||||
NtSyscallName[0] = 'Z';
|
||||
NtSyscallName[1] = 'w';
|
||||
WriteKernelModeStub(KernelModeFile,
|
||||
NtSyscallName,
|
||||
StackBytes,
|
||||
SyscallId | Index);
|
||||
}
|
||||
|
||||
/* Only increase if we actually added something */
|
||||
SyscallId++;
|
||||
|
|
Loading…
Reference in a new issue