A flaw was found in BusyBox dpkg. The write_status_file() function does not reset a field cursor between package stanzas. When two packages are removed in a single invocation and the first stanza is larger than the second, the second package stanza can be dropped from the status file, causing limited data corruption.
{
"binaries": [
{
"binary_name": "busybox",
"binary_version": "1:1.30.1-4ubuntu6.5"
},
{
"binary_name": "busybox-initramfs",
"binary_version": "1:1.30.1-4ubuntu6.5"
},
{
"binary_name": "busybox-static",
"binary_version": "1:1.30.1-4ubuntu6.5"
},
{
"binary_name": "busybox-syslogd",
"binary_version": "1:1.30.1-4ubuntu6.5"
},
{
"binary_name": "udhcpc",
"binary_version": "1:1.30.1-4ubuntu6.5"
},
{
"binary_name": "udhcpd",
"binary_version": "1:1.30.1-4ubuntu6.5"
}
]
}{
"binaries": [
{
"binary_name": "busybox",
"binary_version": "1:1.30.1-7ubuntu3.1"
},
{
"binary_name": "busybox-initramfs",
"binary_version": "1:1.30.1-7ubuntu3.1"
},
{
"binary_name": "busybox-static",
"binary_version": "1:1.30.1-7ubuntu3.1"
},
{
"binary_name": "busybox-syslogd",
"binary_version": "1:1.30.1-7ubuntu3.1"
},
{
"binary_name": "udhcpc",
"binary_version": "1:1.30.1-7ubuntu3.1"
},
{
"binary_name": "udhcpd",
"binary_version": "1:1.30.1-7ubuntu3.1"
}
]
}{
"binaries": [
{
"binary_name": "busybox",
"binary_version": "1:1.36.1-6ubuntu3.1"
},
{
"binary_name": "busybox-initramfs",
"binary_version": "1:1.36.1-6ubuntu3.1"
},
{
"binary_name": "busybox-static",
"binary_version": "1:1.36.1-6ubuntu3.1"
},
{
"binary_name": "busybox-syslogd",
"binary_version": "1:1.36.1-6ubuntu3.1"
},
{
"binary_name": "udhcpc",
"binary_version": "1:1.36.1-6ubuntu3.1"
},
{
"binary_name": "udhcpd",
"binary_version": "1:1.36.1-6ubuntu3.1"
}
]
}{
"binaries": [
{
"binary_name": "busybox",
"binary_version": "1:1.37.0-7ubuntu1"
},
{
"binary_name": "busybox-initramfs",
"binary_version": "1:1.37.0-7ubuntu1"
},
{
"binary_name": "busybox-static",
"binary_version": "1:1.37.0-7ubuntu1"
},
{
"binary_name": "busybox-syslogd",
"binary_version": "1:1.37.0-7ubuntu1"
},
{
"binary_name": "udhcpc",
"binary_version": "1:1.37.0-7ubuntu1"
},
{
"binary_name": "udhcpd",
"binary_version": "1:1.37.0-7ubuntu1"
}
]
}{
"binaries": [
{
"binary_name": "busybox",
"binary_version": "1:1.38.0-3ubuntu4"
},
{
"binary_name": "busybox-static",
"binary_version": "1:1.38.0-3ubuntu4"
},
{
"binary_name": "busybox-syslogd",
"binary_version": "1:1.38.0-3ubuntu4"
},
{
"binary_name": "udhcpc",
"binary_version": "1:1.38.0-3ubuntu4"
},
{
"binary_name": "udhcpd",
"binary_version": "1:1.38.0-3ubuntu4"
}
]
}{
"binaries": [
{
"binary_name": "busybox",
"binary_version": "1:1.21.0-1ubuntu1.4+esm1"
},
{
"binary_name": "busybox-initramfs",
"binary_version": "1:1.21.0-1ubuntu1.4+esm1"
},
{
"binary_name": "busybox-static",
"binary_version": "1:1.21.0-1ubuntu1.4+esm1"
},
{
"binary_name": "busybox-syslogd",
"binary_version": "1:1.21.0-1ubuntu1.4+esm1"
},
{
"binary_name": "udhcpc",
"binary_version": "1:1.21.0-1ubuntu1.4+esm1"
},
{
"binary_name": "udhcpd",
"binary_version": "1:1.21.0-1ubuntu1.4+esm1"
}
]
}{
"binaries": [
{
"binary_name": "busybox",
"binary_version": "1:1.22.0-15ubuntu1.4+esm2"
},
{
"binary_name": "busybox-initramfs",
"binary_version": "1:1.22.0-15ubuntu1.4+esm2"
},
{
"binary_name": "busybox-static",
"binary_version": "1:1.22.0-15ubuntu1.4+esm2"
},
{
"binary_name": "busybox-syslogd",
"binary_version": "1:1.22.0-15ubuntu1.4+esm2"
},
{
"binary_name": "udhcpc",
"binary_version": "1:1.22.0-15ubuntu1.4+esm2"
},
{
"binary_name": "udhcpd",
"binary_version": "1:1.22.0-15ubuntu1.4+esm2"
}
]
}{
"binaries": [
{
"binary_name": "busybox",
"binary_version": "1:1.27.2-2ubuntu3.4+esm1"
},
{
"binary_name": "busybox-initramfs",
"binary_version": "1:1.27.2-2ubuntu3.4+esm1"
},
{
"binary_name": "busybox-static",
"binary_version": "1:1.27.2-2ubuntu3.4+esm1"
},
{
"binary_name": "busybox-syslogd",
"binary_version": "1:1.27.2-2ubuntu3.4+esm1"
},
{
"binary_name": "udhcpc",
"binary_version": "1:1.27.2-2ubuntu3.4+esm1"
},
{
"binary_name": "udhcpd",
"binary_version": "1:1.27.2-2ubuntu3.4+esm1"
}
]
}