Bug/818 (#821)
* Partial #818, unused arg * Partial #818, init var * partail #818, fix va_args usage * partail #818, handle f* calls and avoid possible call to malloc with negative values * partail #818, prevent double free * partail #818, resource leak if test fail * partail #818, null deref fix * partail #818, avoid double free on fp failure * Partial #818, fix error msg * Partial #818, leak on error * Partial #818, null deref * Partial #818, avoid possible negative index on failure * partial #818, does not free if we return if requested new size overflow * partial #818, avoid double free, free where the alloc happened * partial #818, fix assert logic and test exp_size for <=0 * partial #818, fix assert logic for color idx test * partial #818, new case for possible leak, improve logic * partial #818, fix assert logic for color idx testmaster
parent
910924ffd7
commit
95c6185b37
|
@ -26,7 +26,13 @@ int main()
|
||||||
im = gdImageCreate(5, 5);
|
im = gdImageCreate(5, 5);
|
||||||
c = gdImageColorAllocate(im, 255, 0, 255);
|
c = gdImageColorAllocate(im, 255, 0, 255);
|
||||||
c = gdImageColorClosest(im, 255, 0, 255);
|
c = gdImageColorClosest(im, 255, 0, 255);
|
||||||
c = gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0);
|
c = gdTestAssert(c>=0) ?
|
||||||
|
gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0)
|
||||||
|
:
|
||||||
|
-1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gdImageDestroy(im);
|
gdImageDestroy(im);
|
||||||
if (gdTestAssert(c==0xFF00FF) != 1) {
|
if (gdTestAssert(c==0xFF00FF) != 1) {
|
||||||
error = -1;
|
error = -1;
|
||||||
|
@ -38,7 +44,10 @@ int main()
|
||||||
c = gdImageColorAllocate(im, 255, 0, 0);
|
c = gdImageColorAllocate(im, 255, 0, 0);
|
||||||
}
|
}
|
||||||
c = gdImageColorClosest(im, 255, 0, 0);
|
c = gdImageColorClosest(im, 255, 0, 0);
|
||||||
c = gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0);
|
c = gdTestAssert(c>=0) ?
|
||||||
|
gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0)
|
||||||
|
:
|
||||||
|
-1;
|
||||||
gdImageDestroy(im);
|
gdImageDestroy(im);
|
||||||
if (gdTestAssert(c==0xFF0000) != 1) {
|
if (gdTestAssert(c==0xFF0000) != 1) {
|
||||||
error = -1;
|
error = -1;
|
||||||
|
@ -49,7 +58,10 @@ int main()
|
||||||
c = gdImageColorAllocate(im, 255, 0, 0);
|
c = gdImageColorAllocate(im, 255, 0, 0);
|
||||||
}
|
}
|
||||||
c = gdImageColorClosest(im, 255, 0, 0);
|
c = gdImageColorClosest(im, 255, 0, 0);
|
||||||
c = gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0);
|
c = gdTestAssert(c>=0) ?
|
||||||
|
gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0)
|
||||||
|
:
|
||||||
|
-1;
|
||||||
gdImageDestroy(im);
|
gdImageDestroy(im);
|
||||||
if (gdTestAssert(c==0xFF0000) != 1) {
|
if (gdTestAssert(c==0xFF0000) != 1) {
|
||||||
error = -1;
|
error = -1;
|
||||||
|
|
|
@ -36,8 +36,8 @@ int main()
|
||||||
if (gdTestAssert(color == 0xFF00FF) != 1) {
|
if (gdTestAssert(color == 0xFF00FF) != 1) {
|
||||||
error = -1;
|
error = -1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
if (gdTestAssert(c2 == 1)) {
|
if (gdTestAssert(c2 == 1)) {
|
||||||
color = gdTrueColorAlpha(gdImageRed(im, c2), gdImageGreen(im, c2),
|
color = gdTrueColorAlpha(gdImageRed(im, c2), gdImageGreen(im, c2),
|
||||||
gdImageBlue(im, c2), 0);
|
gdImageBlue(im, c2), 0);
|
||||||
|
@ -56,6 +56,7 @@ int main()
|
||||||
error = -1;
|
error = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gdImageDestroy(im);
|
gdImageDestroy(im);
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|
|
@ -41,23 +41,35 @@ static size_t read_test_file(char **buffer, char *basename)
|
||||||
{
|
{
|
||||||
char *filename;
|
char *filename;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
size_t exp_size, act_size = -1;
|
|
||||||
|
size_t exp_size = 0, act_size = -1;
|
||||||
|
|
||||||
filename = gdTestFilePath2("tiff", basename);
|
filename = gdTestFilePath2("tiff", basename);
|
||||||
fp = fopen(filename, "rb");
|
fp = fopen(filename, "rb");
|
||||||
if (gdTestAssert(fp != NULL)) goto fail3;
|
if (!gdTestAssert(fp != NULL)) goto fail3;
|
||||||
|
|
||||||
if (fseek(fp, 0, SEEK_END) != 0) goto fail2;
|
if (fseek(fp, 0, SEEK_END) != 0) {
|
||||||
|
gdTestAssert(1==0); // only increase num failures used as return values in main
|
||||||
|
goto fail2;
|
||||||
|
}
|
||||||
|
|
||||||
exp_size = ftell(fp);
|
exp_size = ftell(fp);
|
||||||
if (gdTestAssert(exp_size <= 0)) goto fail2;
|
if (!gdTestAssert(exp_size > 0)) {
|
||||||
|
gdTestAssert(1==0); // only increase num failures used as return values in main
|
||||||
|
goto fail2;
|
||||||
|
}
|
||||||
|
|
||||||
if (fseek(fp, 0, SEEK_SET) != 0) goto fail2;
|
if (fseek(fp, 0, SEEK_SET) != 0) {
|
||||||
|
gdTestAssert(1==0); // only increase num failures used as return values in main
|
||||||
|
goto fail2;
|
||||||
|
}
|
||||||
|
|
||||||
*buffer = malloc(exp_size);
|
*buffer = malloc(exp_size);
|
||||||
if (gdTestAssert(*buffer != NULL)) goto fail2;
|
if (gdTestAssert(*buffer != NULL)) {
|
||||||
act_size = fread(*buffer, sizeof(**buffer), exp_size, fp);
|
act_size = fread(*buffer, sizeof(**buffer), exp_size, fp);
|
||||||
gdTestAssert(act_size == exp_size);
|
gdTestAssert(act_size == exp_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fail2:
|
fail2:
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
Loading…
Reference in New Issue