mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
mkrasimage: fix segmentation fault
Code was attempting to determine the size of the file
before it was actually known and allocating insufficient
memory space. Images above a certain size caused a
segmentation fault. Moving the calloc() ensured ensured
that large images didn't result in a buffer overflow on
memcpy().
Signed-off-by: Michael T Farnworth <michael@turf.org>
[fixed name in From to match one in SoB]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit b468353a37
)
This commit is contained in:
parent
bf5ea2a8dc
commit
96092a8eea
@ -315,6 +315,16 @@ int build_image()
|
|||||||
map_file(&kernel);
|
map_file(&kernel);
|
||||||
map_file(&rootfs);
|
map_file(&rootfs);
|
||||||
|
|
||||||
|
/* As ZyXEL Web-GUI only accept images with a rootfs equal or larger than the first firmware shipped
|
||||||
|
* for the device, we need to pad rootfs partition to this size. To perform further calculations, we
|
||||||
|
* decide the size of this part here. In case the rootfs we want to integrate in our image is larger,
|
||||||
|
* take it's size, otherwise the supplied size.
|
||||||
|
*
|
||||||
|
* Be careful! We rely on assertion of correct size to be performed beforehand. It is unknown if images
|
||||||
|
* with a to large rootfs are accepted or not.
|
||||||
|
*/
|
||||||
|
rootfs_out.size = rootfs_size < rootfs.size ? rootfs.size : rootfs_size;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate memory and copy input rootfs for temporary output rootfs.
|
* Allocate memory and copy input rootfs for temporary output rootfs.
|
||||||
* This is important as we have to generate the rootfs checksum over the
|
* This is important as we have to generate the rootfs checksum over the
|
||||||
@ -446,14 +456,5 @@ int main(int argc, char *argv[])
|
|||||||
if (ret)
|
if (ret)
|
||||||
usage(EXIT_FAILURE);
|
usage(EXIT_FAILURE);
|
||||||
|
|
||||||
/* As ZyXEL Web-GUI only accept images with a rootfs equal or larger than the first firmware shipped
|
|
||||||
* for the device, we need to pad rootfs partition to this size. To perform further calculations, we
|
|
||||||
* decide the size of this part here. In case the rootfs we want to integrate in our image is larger,
|
|
||||||
* take it's size, otherwise the supplied size.
|
|
||||||
*
|
|
||||||
* Be careful! We rely on assertion of correct size to be performed beforehand. It is unknown if images
|
|
||||||
* with a to large rootfs are accepted or not.
|
|
||||||
*/
|
|
||||||
rootfs_out.size = rootfs_size < rootfs.size ? rootfs.size : rootfs_size;
|
|
||||||
return build_image();
|
return build_image();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user