If filename is invalid, fopen should return NULL

This commit is contained in:
Alex 2023-05-04 05:01:20 +03:00
parent f4ca629a8f
commit 87c7e0f286
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD

View File

@ -9,8 +9,12 @@ FILE *stderr;
FILE *fopen(const char *filename, const char *mode)
{
void *KPrivate = (void *)syscall2(_FileOpen, (uint64_t)filename, (uint64_t)mode);
if (IsSyscallError(KPrivate))
return NULL;
FILE *FilePtr = malloc(sizeof(FILE));
FilePtr->KernelPrivate = (void *)syscall2(_FileOpen, (uint64_t)filename, (uint64_t)mode);
FilePtr->KernelPrivate = KPrivate;
return FilePtr;
}
@ -24,6 +28,13 @@ size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
return syscall4(_FileWrite, (uint64_t)stream->KernelPrivate, stream->offset, (uint64_t)ptr, size * nmemb);
}
int fclose(FILE *fp)
{
void *KP = fp->KernelPrivate;
free(fp);
return syscall1(_FileClose, (uint64_t)KP);
}
int fseek(FILE *stream, long offset, int whence)
{
switch (whence)
@ -47,13 +58,6 @@ long ftell(FILE *stream)
return stream->offset;
}
int fclose(FILE *fp)
{
void *KP = fp->KernelPrivate;
free(fp);
return syscall1(_FileClose, (uint64_t)KP);
}
int fflush(FILE *stream)
{
return 0;