On 28/07/2025 11:24 am, Marek Marczykowski-Górecki wrote:
> When running xl in a domU, it doesn't have access to the Xen command
> line. Before the non-truncating xc_xenver_cmdline(), it was always set
> with strdup, possibly of an empty string. Now it's NULL. Treat it the
> same as empty cmdline, as it was before. Autoballoon isn't relevant for
> xl devd in a domU anyway.
>
> Fixes: 75f91607621c ("tools: Introduce a non-truncating xc_xenver_cmdline()")
> Signed-off-by: Marek Marczykowski-Górecki <[email protected]>
> ---
> So, apparently the "No API/ABI change" was a lie... it changed "empty
> string" to NULL in libxl_version_info->commandline. Quick search didn't
> spot any other (in-tree) place that could trip on NULL there. IMO NULL
> value in this case makes more sense. Buf maybe for the API stability
> reasons the old behavior should be restored?Hmm, I didn't intend to change things, but I also didn't anticipate libxl__strdup()'s behaviour, or for something to depend on that. While this does turn out to be a marginal API change, I think your solution is the right one. I do not think it's reasonable for there to be one magic pointer that has differing NULL-ness to the others, and NULL for "no information" is the better interface. That said, is the other use fully safe? I can't see anything that requires sprintf()'s %s to detect a NULL pointer and not crash. > PS I'm working on a CI test for this case (and driver domains in > general). I have it working with Alpine already, but it wouldn't detect > this issue, as musl's regexec() doesn't crash on NULL... So, I'll add a > test on Debian too. Excellent. ~Andrew
