warning in ideviceinstaller.c
Reported by wizzrobe | May 18th, 2011 @ 09:19 PM
Just cloned the latest ideviceinstaller git and built on arch linux, using gcc version 4.6.0 20110513 and libzip 0.10
Line 166 in ideviceinstaller.c gives the following warning:
error: comparison between signed and unsigned integer expressions
[-Werror=sign-compare]
Turns out zip_fread returns signed int64 while zip_stat size is an unsigned int64.
I was able to fix with the following patch that tries to do a safe cast. Hopefully it is at least helpful:
--- a/src/ideviceinstaller.c
+++ b/src/ideviceinstaller.c
@@ -163,7 +163,7 @@ static int zip_f_get_contents(struct zip *zf, const char *filename, int locate_f
}
*buffer = malloc(zs.size);
- if (zip_fread(zfile, *buffer, zs.size) != zs.size) {
+ if (zs.size>LLONG_MAX || zip_fread(zfile, *buffer, zs.size) != (zip_int64_t)zs.size) {
fprintf(stderr, "ERROR: zip_fread %" PRIu64 " bytes from '%s'\n", (uint64_t)zs.size, filename);
free(*buffer);
*buffer = NULL;
Comments and changes to this ticket
-
Martin S. May 17th, 2012 @ 04:12 PM
- State changed from new to resolved
- Tag set to ideviceinstaller, libzip
Fixed in:
http://cgit.sukimashita.com/ideviceinstaller.git/commit/?id=de7da75...Thanks for reporting.
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
A project around supporting the iPhone in Linux.
See http://libimobiledevice.org