News for hackers. Stuff that matters.
Re:OpenBSD, C, httpd and SQLite – Web App stack by sunfish on Saturday June 09, 2018 @07:24AM (#17272491)
Re:OpenBSD, C, httpd and SQLite – Web App stack by tedunangst on Saturday June 09, 2018 @08:32AM (#17272704)
This is true. Although they did say "copy a string", not use strdup to copy a thing that is not a string. :)
Re:OpenBSD, C, httpd and SQLite – Web App stack by sunfish on Saturday June 09, 2018 @10:28AM (#17273182)
Yes, that's one of the three CVE's I posted ;).

You got me thinking about ways one could get strdup wrong:

- input is not a string -> possible UB

- input is a string, but the character encoding wasn't what you thought -> possible UB

- input is a string, but it was the pointer-plus-length kind -> possible UB

- input is modified by another thread -> possible UB

- strdup called from within a signal handler -> possible UB

- failure to handle error return values -> possible UB

- failure to free the memory when it's no longer needed -> memory leak

- freed the memory more than once -> possible UB

- used the memory after freeing it -> possible UB

I've personally seen several of these in real-world code.

Re:OpenBSD, C, httpd and SQLite – Web App stack by sunfish on Saturday June 09, 2018 @01:01PM (#17273869)
How did I forget:

- forget to #include string.h, so strdup is implicitly declared, so its return type is int, which implicitly converts to char*, so everything still compiles -> possible UB