mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-20 09:34:09 +00:00
Prevent undefined behavior reported by UBSan
runtime error: member access within null pointer of type 'const struct dirent'
This commit is contained in:
parent
81519d227b
commit
dbe270476a
@ -138,7 +138,7 @@ struct RDIR *retro_opendir(const char *name)
|
||||
#elif defined(VITA) || defined(PSP)
|
||||
rdir->directory = sceIoDopen(name);
|
||||
#elif defined(_3DS)
|
||||
rdir->directory = (name && *name)? opendir(name) : NULL;
|
||||
rdir->directory = !string_is_empty(name) ? opendir(name) : NULL;
|
||||
rdir->entry = NULL;
|
||||
#elif defined(__CELLOS_LV2__)
|
||||
rdir->error = cellFsOpendir(name, &rdir->directory);
|
||||
@ -147,7 +147,13 @@ struct RDIR *retro_opendir(const char *name)
|
||||
rdir->entry = NULL;
|
||||
#endif
|
||||
|
||||
return rdir;
|
||||
if (rdir->directory)
|
||||
return rdir;
|
||||
else
|
||||
{
|
||||
free(rdir);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
bool retro_dirent_error(struct RDIR *rdir)
|
||||
@ -208,6 +214,7 @@ const char *retro_dirent_get_name(struct RDIR *rdir)
|
||||
#elif defined(VITA) || defined(PSP) || defined(__CELLOS_LV2__)
|
||||
return rdir->entry.d_name;
|
||||
#else
|
||||
|
||||
return rdir->entry->d_name;
|
||||
#endif
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user