mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-15 12:23:15 +00:00
LibC: Precompute directory_name
length in ttyname_r_for_directory()
This commit is contained in:
parent
72911cd006
commit
5f7745641d
|
@ -432,6 +432,7 @@ static int ttyname_r_for_directory(char const* directory_name, dev_t device_mode
|
|||
|
||||
struct dirent* entry = nullptr;
|
||||
char* name_path = nullptr;
|
||||
auto const directory_name_length = strlen(directory_name);
|
||||
|
||||
// FIXME: Use LibCore DirIterator here instead
|
||||
while ((entry = readdir(dirstream)) != nullptr) {
|
||||
|
@ -440,7 +441,7 @@ static int ttyname_r_for_directory(char const* directory_name, dev_t device_mode
|
|||
&& strcmp(entry->d_name, "stdout")
|
||||
&& strcmp(entry->d_name, "stderr")) {
|
||||
|
||||
size_t name_length = strlen(directory_name) + strlen(entry->d_name) + 1;
|
||||
size_t name_length = directory_name_length + strlen(entry->d_name) + 1;
|
||||
|
||||
if (name_length > size) {
|
||||
errno = ERANGE;
|
||||
|
@ -452,8 +453,8 @@ static int ttyname_r_for_directory(char const* directory_name, dev_t device_mode
|
|||
// perhaps a static storage.
|
||||
VERIFY(name_path);
|
||||
memset(name_path, 0, name_length);
|
||||
memcpy(name_path, directory_name, strlen(directory_name));
|
||||
memcpy(&name_path[strlen(directory_name)], entry->d_name, strlen(entry->d_name));
|
||||
memcpy(name_path, directory_name, directory_name_length);
|
||||
memcpy(&name_path[directory_name_length], entry->d_name, strlen(entry->d_name));
|
||||
struct stat st;
|
||||
if (lstat(name_path, &st) < 0) {
|
||||
free(name_path);
|
||||
|
|
Loading…
Reference in a new issue