Fix the wrong use of snprintf which is introduced in 1d2f619049

This commit is contained in:
Xinchen Hui 2012-09-10 23:08:54 +08:00
parent 62d86209cf
commit 0a25a0241e
2 changed files with 5 additions and 7 deletions

View file

@ -316,8 +316,6 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp, apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
const char *fn, int action) const char *fn, int action)
{ {
- int errs = 0;
+ int errs = 0, mflen = 0;
struct magic_entry *marray; struct magic_entry *marray;
uint32_t marraycount, i, mentrycount = 0, starttest; uint32_t marraycount, i, mentrycount = 0, starttest;
- size_t slen, files = 0, maxfiles = 0; - size_t slen, files = 0, maxfiles = 0;
@ -356,7 +354,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
} }
while ((d = readdir(dir)) != NULL) { while ((d = readdir(dir)) != NULL) {
- if (asprintf(&mfn, "%s/%s", fn, d->d_name) < 0) { - if (asprintf(&mfn, "%s/%s", fn, d->d_name) < 0) {
+ if ((mflen = snprintf(mfn, sizeof(mfn), "%s/%s", fn, d->d_name)) < 0) { + if (snprintf(mfn, sizeof(mfn), "%s/%s", fn, d->d_name) < 0) {
file_oomem(ms, file_oomem(ms,
strlen(fn) + strlen(d->d_name) + 2); strlen(fn) + strlen(d->d_name) + 2);
errs++; errs++;
@ -379,7 +377,7 @@ diff -u libmagic.origin/apprentice.c libmagic/apprentice.c
} }
} }
- filearr[files++] = mfn; - filearr[files++] = mfn;
+ filearr[files++] = estrndup(mfn, mflen); + filearr[files++] = estrndup(mfn);
} }
closedir(dir); closedir(dir);
qsort(filearr, files, sizeof(*filearr), cmpstrp); qsort(filearr, files, sizeof(*filearr), cmpstrp);

View file

@ -753,7 +753,7 @@ private int
apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp, apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
const char *fn, int action) const char *fn, int action)
{ {
int errs = 0, mflen = 0; int errs = 0;
struct magic_entry *marray; struct magic_entry *marray;
uint32_t marraycount, i, mentrycount = 0, starttest; uint32_t marraycount, i, mentrycount = 0, starttest;
size_t files = 0, maxfiles = 0; size_t files = 0, maxfiles = 0;
@ -782,7 +782,7 @@ apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
goto out; goto out;
} }
while ((d = readdir(dir)) != NULL) { while ((d = readdir(dir)) != NULL) {
if ((mflen = snprintf(mfn, sizeof(mfn), "%s/%s", fn, d->d_name)) < 0) { if (snprintf(mfn, sizeof(mfn), "%s/%s", fn, d->d_name) < 0) {
file_oomem(ms, file_oomem(ms,
strlen(fn) + strlen(d->d_name) + 2); strlen(fn) + strlen(d->d_name) + 2);
errs++; errs++;
@ -804,7 +804,7 @@ apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
goto out; goto out;
} }
} }
filearr[files++] = estrndup(mfn, mflen); filearr[files++] = estrdup(mfn);
} }
closedir(dir); closedir(dir);
qsort(filearr, files, sizeof(*filearr), cmpstrp); qsort(filearr, files, sizeof(*filearr), cmpstrp);