diff --git a/test/compare_file.c b/test/compare_file.c index 1660c1e0..38620d98 100644 --- a/test/compare_file.c +++ b/test/compare_file.c @@ -5,7 +5,7 @@ To compare tree /media/dvd and /original/dir : find /media/dvd -exec compare_file '{}' /media/dvd /original/dir ';' - Copyright 2008 - 2014 Thomas Schmitt, + Copyright 2008 - 2015 Thomas Schmitt, Provided under GPL version 2 or later. @@ -282,6 +282,18 @@ int main(int argc, char **argv) argv[0], argv[1], argv[2]); exit(2); } + if(strlen(argv[1]) >= 4096) { + fprintf(stderr, "path exceeds size limit of 4095\n"); + exit(3); + } + if(strlen(argv[1]) - strlen(argv[2]) > 4000) { + fprintf(stderr, "common address part exceeds size limit of 4000\n"); + exit(3); + } + if(strlen(argv[3]) + 1 + strlen(argv[1]) - strlen(argv[2]) >= 4096) { + fprintf(stderr, "prefix2 exceeds size limit of 4095\n"); + exit(3); + } strcpy(adr1, argv[1]); strcpy(adrc, argv[1]+strlen(argv[2])); sprintf(adr2, "%s%s%s",