mirror of
https://github.com/ggrandou/abootimg.git
synced 2024-11-27 03:43:30 +08:00
check fread() ret values + clean all fread/fwrite
This commit is contained in:
parent
1fb6383d76
commit
4494fb2cac
51
abootimg.c
51
abootimg.c
@ -356,9 +356,8 @@ void open_bootimg(t_abootimg* img, char* mode)
|
|||||||
|
|
||||||
void read_header(t_abootimg* img)
|
void read_header(t_abootimg* img)
|
||||||
{
|
{
|
||||||
|
size_t rb = fread(&img->header, sizeof(boot_img_hdr), 1, img->stream);
|
||||||
fread(&img->header, sizeof(boot_img_hdr), 1, img->stream);
|
if ((rb!=1) || ferror(img->stream))
|
||||||
if (ferror(img->stream))
|
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
else if (feof(img->stream))
|
else if (feof(img->stream))
|
||||||
abort_printf("%s: cannot read image header\n", img->fname);
|
abort_printf("%s: cannot read image header\n", img->fname);
|
||||||
@ -531,8 +530,8 @@ void update_images(t_abootimg *img)
|
|||||||
char* k = malloc(ksize);
|
char* k = malloc(ksize);
|
||||||
if (!k)
|
if (!k)
|
||||||
abort_perror("");
|
abort_perror("");
|
||||||
fread(k, 1, ksize, stream);
|
size_t rb = fread(k, ksize, 1, stream);
|
||||||
if (ferror(stream))
|
if ((rb!=1) || ferror(stream))
|
||||||
abort_perror(img->kernel_fname);
|
abort_perror(img->kernel_fname);
|
||||||
else if (feof(stream))
|
else if (feof(stream))
|
||||||
abort_printf("%s: cannot read kernel\n", img->kernel_fname);
|
abort_printf("%s: cannot read kernel\n", img->kernel_fname);
|
||||||
@ -553,8 +552,8 @@ void update_images(t_abootimg *img)
|
|||||||
char* r = malloc(rsize);
|
char* r = malloc(rsize);
|
||||||
if (!r)
|
if (!r)
|
||||||
abort_perror("");
|
abort_perror("");
|
||||||
fread(r, 1, rsize, stream);
|
size_t rb = fread(r, rsize, 1, stream);
|
||||||
if (ferror(stream))
|
if ((rb!=1) || ferror(stream))
|
||||||
abort_perror(img->ramdisk_fname);
|
abort_perror(img->ramdisk_fname);
|
||||||
else if (feof(stream))
|
else if (feof(stream))
|
||||||
abort_printf("%s: cannot read ramdisk\n", img->ramdisk_fname);
|
abort_printf("%s: cannot read ramdisk\n", img->ramdisk_fname);
|
||||||
@ -569,8 +568,8 @@ void update_images(t_abootimg *img)
|
|||||||
abort_perror("");
|
abort_perror("");
|
||||||
if (fseek(img->stream, roffset, SEEK_SET))
|
if (fseek(img->stream, roffset, SEEK_SET))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
fread(r, 1, rsize, img->stream);
|
size_t rb = fread(r, rsize, 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if ((rb!=1) || ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
else if (feof(img->stream))
|
else if (feof(img->stream))
|
||||||
abort_printf("%s: cannot read ramdisk\n", img->fname);
|
abort_printf("%s: cannot read ramdisk\n", img->fname);
|
||||||
@ -589,8 +588,8 @@ void update_images(t_abootimg *img)
|
|||||||
char* s = malloc(ssize);
|
char* s = malloc(ssize);
|
||||||
if (!s)
|
if (!s)
|
||||||
abort_perror("");
|
abort_perror("");
|
||||||
fread(s, 1, ssize, stream);
|
size_t rb = fread(s, ssize, 1, stream);
|
||||||
if (ferror(stream))
|
if ((rb!=1) || ferror(stream))
|
||||||
abort_perror(img->second_fname);
|
abort_perror(img->second_fname);
|
||||||
else if (feof(stream))
|
else if (feof(stream))
|
||||||
abort_printf("%s: cannot read second stage\n", img->second_fname);
|
abort_printf("%s: cannot read second stage\n", img->second_fname);
|
||||||
@ -605,8 +604,8 @@ void update_images(t_abootimg *img)
|
|||||||
abort_perror("");
|
abort_perror("");
|
||||||
if (fseek(img->stream, soffset, SEEK_SET))
|
if (fseek(img->stream, soffset, SEEK_SET))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
fread(s, 1, ssize, img->stream);
|
size_t rb = fread(s, ssize, 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if ((rb!=1) || ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
else if (feof(img->stream))
|
else if (feof(img->stream))
|
||||||
abort_printf("%s: cannot read second stage\n", img->fname);
|
abort_printf("%s: cannot read second stage\n", img->fname);
|
||||||
@ -651,16 +650,16 @@ void write_bootimg(t_abootimg* img)
|
|||||||
if (ferror(img->stream))
|
if (ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fwrite(padding, 1, psize - sizeof(img->header), img->stream);
|
fwrite(padding, psize - sizeof(img->header), 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if (ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
if (img->kernel) {
|
if (img->kernel) {
|
||||||
fwrite(img->kernel, 1, img->header.kernel_size, img->stream);
|
fwrite(img->kernel, img->header.kernel_size, 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if (ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fwrite(padding, 1, psize - (img->header.kernel_size % psize), img->stream);
|
fwrite(padding, psize - (img->header.kernel_size % psize), 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if (ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
}
|
}
|
||||||
@ -669,11 +668,11 @@ void write_bootimg(t_abootimg* img)
|
|||||||
if (fseek(img->stream, (1+n)*psize, SEEK_SET))
|
if (fseek(img->stream, (1+n)*psize, SEEK_SET))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fwrite(img->ramdisk, 1, img->header.ramdisk_size, img->stream);
|
fwrite(img->ramdisk, img->header.ramdisk_size, 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if (ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fwrite(padding, 1, psize - (img->header.ramdisk_size % psize), img->stream);
|
fwrite(padding, psize - (img->header.ramdisk_size % psize), 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if (ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
}
|
}
|
||||||
@ -682,11 +681,11 @@ void write_bootimg(t_abootimg* img)
|
|||||||
if (fseek(img->stream, (1+n+m)*psize, SEEK_SET))
|
if (fseek(img->stream, (1+n+m)*psize, SEEK_SET))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fwrite(img->second, 1, img->header.second_size, img->stream);
|
fwrite(img->second, img->header.second_size, 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if (ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fwrite(padding, 1, psize - (img->header.second_size % psize), img->stream);
|
fwrite(padding, psize - (img->header.second_size % psize), 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if (ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
}
|
}
|
||||||
@ -777,8 +776,8 @@ void extract_kernel(t_abootimg* img)
|
|||||||
if (fseek(img->stream, psize, SEEK_SET))
|
if (fseek(img->stream, psize, SEEK_SET))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fread(k, ksize, 1, img->stream);
|
size_t rb = fread(k, ksize, 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if ((rb!=1) || ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
FILE* kernel_file = fopen(img->kernel_fname, "w");
|
FILE* kernel_file = fopen(img->kernel_fname, "w");
|
||||||
@ -813,8 +812,8 @@ void extract_ramdisk(t_abootimg* img)
|
|||||||
if (fseek(img->stream, roffset, SEEK_SET))
|
if (fseek(img->stream, roffset, SEEK_SET))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fread(r, rsize, 1, img->stream);
|
size_t rb = fread(r, rsize, 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if ((rb!=1) || ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
FILE* ramdisk_file = fopen(img->ramdisk_fname, "w");
|
FILE* ramdisk_file = fopen(img->ramdisk_fname, "w");
|
||||||
@ -853,8 +852,8 @@ void extract_second(t_abootimg* img)
|
|||||||
if (fseek(img->stream, soffset, SEEK_SET))
|
if (fseek(img->stream, soffset, SEEK_SET))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
fread(s, ssize, 1, img->stream);
|
size_t rb = fread(s, ssize, 1, img->stream);
|
||||||
if (ferror(img->stream))
|
if ((rb!=1) || ferror(img->stream))
|
||||||
abort_perror(img->fname);
|
abort_perror(img->fname);
|
||||||
|
|
||||||
FILE* second_file = fopen(img->second_fname, "w");
|
FILE* second_file = fopen(img->second_fname, "w");
|
||||||
|
Loading…
Reference in New Issue
Block a user