Comment 0 for bug 1840995

Revision history for this message
Ivan Kurnosov (zerkms) wrote :

In the second half of the function there is

    # Calculate the interval in seconds depending on the unit specified
    if [ "${interval%s}" != "$interval" ] ; then
        interval="${interval%s}"
    elif [ "${interval%m}" != "$interval" ] ; then
        interval="${interval%m}"
        interval=$((interval*60))
    elif [ "${interval%h}" != "$interval" ] ; then
        interval="${interval%h}"
        interval=$((interval*60*60))
    else
        interval="${interval%d}"
        interval=$((interval*60*60*24))
    fi

so, a variable might hold something like "1d", "100m", etc.

Yet in the first there is a condition

    if [ "$interval" -eq 0 ]; then
        debug_echo "check_stamp: interval=0"
        # treat as no time has passed
        return 1
    fi

which treats the value as a number and leads to

/usr/lib/apt/apt.systemd.daily: 87: [: Illegal number: 20h