Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cleanname has a 1-char OOB write when input is "" #686

Open
noncombatant opened this issue Nov 1, 2024 · 1 comment
Open

cleanname has a 1-char OOB write when input is "" #686

noncombatant opened this issue Nov 1, 2024 · 1 comment

Comments

@noncombatant
Copy link

noncombatant commented Nov 1, 2024

It's at line 50:

*q = '\0';
. There isn't necessarily a second byte to write into. Detected with ASAN.

Unfortunately, I think this means the API has to change (to explicitly ignore or reject blank strings): blank strings can't be cleaned to ".".

@krstlmnn
Copy link

krstlmnn commented Feb 22, 2025

From cleanname(3):

The shortest string cleanname can return is two bytes: the null-terminated string ".". Therefore filename must contain room for at least two bytes.

So probably just check if name is nil or name[0] is '\0' at the start and return nil if so.

rooted = name[0] == '/';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants