handle possible buffer max-out with snprintfs as errors
no warnings now.
This commit is contained in:
parent
857db46c96
commit
ae961da8dd
|
@ -58,18 +58,26 @@ _thumbpath(const char *file)
|
||||||
unsigned char sum[20];
|
unsigned char sum[20];
|
||||||
|
|
||||||
if (!sha1((unsigned char *)file, strlen(file), sum)) return NULL;
|
if (!sha1((unsigned char *)file, strlen(file), sum)) return NULL;
|
||||||
snprintf(buf_base, sizeof(buf_base), "%s/rage/albumart/%02x",
|
if ((size_t)snprintf(buf_base, sizeof(buf_base), "%s/rage/albumart/%02x",
|
||||||
efreet_cache_home_get(), sum[0]);
|
efreet_cache_home_get(), sum[0]) >= sizeof(buf_base))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Not enough buffer space for thumb path");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
if (!ecore_file_mkpath(buf_base)) return NULL;
|
if (!ecore_file_mkpath(buf_base)) return NULL;
|
||||||
snprintf(buf_file, sizeof(buf_base),
|
if ((size_t)snprintf(buf_file, sizeof(buf_base),
|
||||||
"%s/%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
|
"%s/%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
|
||||||
"%02x%02x%02x%02x%02x%02x%02x%02x.jpg",
|
"%02x%02x%02x%02x%02x%02x%02x%02x.jpg",
|
||||||
buf_base,
|
buf_base,
|
||||||
sum[1], sum[2], sum[3],
|
sum[1], sum[2], sum[3],
|
||||||
sum[4], sum[5], sum[6], sum[7],
|
sum[4], sum[5], sum[6], sum[7],
|
||||||
sum[8], sum[9], sum[10], sum[11],
|
sum[8], sum[9], sum[10], sum[11],
|
||||||
sum[12], sum[13], sum[14], sum[15],
|
sum[12], sum[13], sum[14], sum[15],
|
||||||
sum[16], sum[17], sum[18], sum[19]);
|
sum[16], sum[17], sum[18], sum[19]) >= sizeof(buf_base))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Not enough buffer space for thumb path");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return strdup(buf_file);
|
return strdup(buf_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,18 +108,30 @@ _cb_loaded(void *data, Evas_Object *obj, void *info EINA_UNUSED)
|
||||||
evas_object_image_size_get(vidimage, &iw, &ih);
|
evas_object_image_size_get(vidimage, &iw, &ih);
|
||||||
if (!sha1((unsigned char *)file, strlen(file), sum)) exit(2);
|
if (!sha1((unsigned char *)file, strlen(file), sum)) exit(2);
|
||||||
if (!efreet_cache_home_get()) exit(3);
|
if (!efreet_cache_home_get()) exit(3);
|
||||||
snprintf(buf_base, sizeof(buf_base), "%s/rage/thumb/%02x",
|
if ((size_t)snprintf(buf_base, sizeof(buf_base), "%s/rage/thumb/%02x",
|
||||||
efreet_cache_home_get(), sum[0]);
|
efreet_cache_home_get(), sum[0]) >= sizeof(buf_base))
|
||||||
snprintf(buf_file, sizeof(buf_file),
|
{
|
||||||
"%s/%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
|
fprintf(stderr, "Not enough buffer space for thumb path");
|
||||||
"%02x%02x%02x%02x%02x%02x%02x%02x.eet",
|
return;
|
||||||
buf_base,
|
}
|
||||||
sum[1], sum[2], sum[3],
|
if ((size_t)snprintf(buf_file, sizeof(buf_file),
|
||||||
sum[4], sum[5], sum[6], sum[7],
|
"%s/%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
|
||||||
sum[8], sum[9], sum[10], sum[11],
|
"%02x%02x%02x%02x%02x%02x%02x%02x.eet",
|
||||||
sum[12], sum[13], sum[14], sum[15],
|
buf_base,
|
||||||
sum[16], sum[17], sum[18], sum[19]);
|
sum[1], sum[2], sum[3],
|
||||||
snprintf(buf_file2, sizeof(buf_file2), "%s.tmp", buf_file);
|
sum[4], sum[5], sum[6], sum[7],
|
||||||
|
sum[8], sum[9], sum[10], sum[11],
|
||||||
|
sum[12], sum[13], sum[14], sum[15],
|
||||||
|
sum[16], sum[17], sum[18], sum[19]) >= sizeof(buf_file))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Not enough buffer space for thumb path");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((size_t)snprintf(buf_file2, sizeof(buf_file2), "%s.tmp", buf_file) >= sizeof(buf_file2))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Not enough buffer space for thumb path");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!ecore_file_mkpath(buf_base)) exit(4);
|
if (!ecore_file_mkpath(buf_base)) exit(4);
|
||||||
ef = eet_open(buf_file2, EET_FILE_MODE_WRITE);
|
ef = eet_open(buf_file2, EET_FILE_MODE_WRITE);
|
||||||
if (!ef) exit(5);
|
if (!ef) exit(5);
|
||||||
|
|
|
@ -388,17 +388,25 @@ _videothumb_image_load(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
if (!sha1((unsigned char *)sd->realpath, strlen(sd->realpath), sum))
|
if (!sha1((unsigned char *)sd->realpath, strlen(sd->realpath), sum))
|
||||||
return;
|
return;
|
||||||
snprintf(buf_base, sizeof(buf_base), "%s/rage/thumb/%02x",
|
if ((size_t)snprintf(buf_base, sizeof(buf_base), "%s/rage/thumb/%02x",
|
||||||
efreet_cache_home_get(), sum[0]);
|
efreet_cache_home_get(), sum[0]) >= sizeof(buf_base))
|
||||||
snprintf(buf_file, sizeof(buf_base),
|
{
|
||||||
"%s/%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
|
fprintf(stderr, "Not enough buffer space for thumb path");
|
||||||
"%02x%02x%02x%02x%02x%02x%02x%02x.eet",
|
return;
|
||||||
buf_base,
|
}
|
||||||
sum[1], sum[2], sum[3],
|
if ((size_t)snprintf(buf_file, sizeof(buf_base),
|
||||||
sum[4], sum[5], sum[6], sum[7],
|
"%s/%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
|
||||||
sum[8], sum[9], sum[10], sum[11],
|
"%02x%02x%02x%02x%02x%02x%02x%02x.eet",
|
||||||
sum[12], sum[13], sum[14], sum[15],
|
buf_base,
|
||||||
sum[16], sum[17], sum[18], sum[19]);
|
sum[1], sum[2], sum[3],
|
||||||
|
sum[4], sum[5], sum[6], sum[7],
|
||||||
|
sum[8], sum[9], sum[10], sum[11],
|
||||||
|
sum[12], sum[13], sum[14], sum[15],
|
||||||
|
sum[16], sum[17], sum[18], sum[19]) >= sizeof(buf_file))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Not enough buffer space for thumb path");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (sd->realfile) eina_stringshare_del(sd->realfile);
|
if (sd->realfile) eina_stringshare_del(sd->realfile);
|
||||||
sd->realfile = eina_stringshare_add(buf_file);
|
sd->realfile = eina_stringshare_add(buf_file);
|
||||||
sd->realpos = (((unsigned int)(sd->pos * 1000.0)) / 10000) * 10000;
|
sd->realpos = (((unsigned int)(sd->pos * 1000.0)) / 10000) * 10000;
|
||||||
|
|
Loading…
Reference in New Issue