[Issue 24549] std.process.environment.get(null) segfaults

2024-05-13 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24549

Dlang Bot  changed:

   What|Removed |Added

   Keywords||pull

--- Comment #2 from Dlang Bot  ---
@schveiguy updated dlang/phobos pull request #9002 "Fix issue 24549" fixing
this issue:

- Fix bugzilla issue 24549 -- environment.get(null) segfaults on Linux

https://github.com/dlang/phobos/pull/9002

--


[Issue 24549] std.process.environment.get(null) segfaults

2024-05-13 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24549

Steven Schveighoffer  changed:

   What|Removed |Added

 CC||schvei...@gmail.com

--- Comment #1 from Steven Schveighoffer  ---
The underlying issue is that `std.internal.cstring.tempCString` returns a
`null` pointer if the input string is an empty string with a null pointer.

This is surprising, and seems to have been done as a hack to work around issue
14980

I would not expect to get a null pointer when passing in an empty string, I'd
expect an empty string. This has a seemingly "unforseen" effect on code that is
accepting of a string, and blindly passes to `tempCString` for calling a C lib
-- if the library function doesn't handle null pointers, or handles them
differently than non-null empty strings, then it may crash or do something
unexpected.

The Linux `getenv` function is crashing on the null pointer (BTW, this does not
happen on MacOS).

--