https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107225
--- Comment #2 from David Malcolm ---
Thanks for filing this bug.
As far as I can tell, the aliasing implementation gets confused at:
1313 | x_hdrs[num_x_hdrs++] = strdup(line);
| ~^~
for the case where x_hdrs is NULL (which -fanalyzer does seem to complain
about) and considers that the write to NULL[0] could modify file's buffer
(which it clearly can't, or at least, it's clear to a human that it can't).
I think it's fixable by making the -fanalyzer's aliasing code consider that
writes through NULL don't alias anything.