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

fix(dracut): correct regression with multiple rd.break= options #2607

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Commits on Feb 12, 2024

  1. fix(dracut-util): do not call strcmp if the value argument is NULL

    The behavior of `strcmp` is undefined if any of its arguments is NULL, which
    can lead to a segfault depending on the implementation. So, this check is
    required to be able to use `getargs` with options where the value is optional,
    e.g., with `rd.break`.
    aafeijoo-suse committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    b9d395a View commit details
    Browse the repository at this point in the history
  2. fix(dracut): correct regression with multiple rd.break= options

    Since the introduction of the `dracut-util` binary to parse kernel command line
    arguments, if the user inputs multiple `rd.break=` options, dracut only stops
    the boot process at the last one.
    
    ```
    [    0.985362] localhost dracut-cmdline[245]: /bin/dracut-cmdline@18(): info 'Using kernel command line parameters:' ' ... rd.debug rd.break=cmdline rd.break=pre-pivot'
    ...
    [    1.044979] localhost dracut-cmdline[245]: /bin/dracut-cmdline@48(): getarg rd.break=cmdline -d rdbreak=cmdline
    [    1.044979] localhost dracut-cmdline[245]: /lib/dracut-lib.sh@155(getarg): debug_off
    [    1.044979] localhost dracut-cmdline[245]: /lib/dracut-lib.sh@23(debug_off): set +x
    [    1.044979] localhost dracut-cmdline[245]: /lib/dracut-lib.sh@218(getarg): return 1
    ```
    
    For options that can be specified multiple times, `getargs` should be used
    instead.
    
    ```
    master> export CMDLINE="rd.break=cmdline rd.break=pre-udev rd.break=pre-pivot"
    master> ./dracut-getarg rd.break=cmdline
    master> echo $?
    1
    master> ./dracut-getarg rd.break=pre-udev
    master> echo $?
    1
    master> ./dracut-getarg rd.break=pre-pivot
    master> echo $?
    0
    master> ./dracut-getargs rd.break=cmdline
    cmdline
    master> echo $?
    0
    master> ./dracut-getargs rd.break=pre-udev
    pre-udev
    master> echo $?
    0
    master> ./dracut-getargs rd.break=pre-pivot
    pre-pivot
    master> echo $?
    0
    ```
    
    Fixes 501d82f
    aafeijoo-suse committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    963549d View commit details
    Browse the repository at this point in the history