mirror of
https://github.com/moparisthebest/pacman
synced 2024-08-13 17:03:46 -04:00
Size handling was changed in fgets() functions
Pacman's fgets function in the API used hardcoded numbers to identify the size. This is not good practice, so replace them with sizeof handling. Signed-off-by: Laszlo Papp <djszapi@archlinux.us> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
f9582c7df2
commit
4281a1a7f2
@ -387,6 +387,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
FILE *fp = NULL;
|
||||
char path[PATH_MAX];
|
||||
char line[513];
|
||||
int sline = sizeof(line)-1;
|
||||
char *pkgpath = NULL;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
@ -418,7 +419,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
info->name, inforeq);
|
||||
|
||||
/* clear out 'line', to be certain - and to make valgrind happy */
|
||||
memset(line, 0, 513);
|
||||
memset(line, 0, sline+1);
|
||||
|
||||
pkgpath = get_pkgpath(db, info);
|
||||
|
||||
@ -442,7 +443,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
}
|
||||
_alpm_strtrim(line);
|
||||
if(strcmp(line, "%NAME%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
if(strcmp(_alpm_strtrim(line), info->name) != 0) {
|
||||
@ -450,7 +451,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
"mismatch on package %s\n"), db->treename, info->name);
|
||||
}
|
||||
} else if(strcmp(line, "%VERSION%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
if(strcmp(_alpm_strtrim(line), info->version) != 0) {
|
||||
@ -458,39 +459,39 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
"mismatch on package %s\n"), db->treename, info->name);
|
||||
}
|
||||
} else if(strcmp(line, "%FILENAME%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
STRDUP(info->filename, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%DESC%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
STRDUP(info->desc, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%GROUPS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->groups = alpm_list_add(info->groups, linedup);
|
||||
}
|
||||
} else if(strcmp(line, "%URL%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
STRDUP(info->url, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%LICENSE%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->licenses = alpm_list_add(info->licenses, linedup);
|
||||
}
|
||||
} else if(strcmp(line, "%ARCH%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
STRDUP(info->arch, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%BUILDDATE%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(line);
|
||||
@ -506,7 +507,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
info->builddate = atol(line);
|
||||
}
|
||||
} else if(strcmp(line, "%INSTALLDATE%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(line);
|
||||
@ -522,12 +523,12 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
info->installdate = atol(line);
|
||||
}
|
||||
} else if(strcmp(line, "%PACKAGER%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
STRDUP(info->packager, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%REASON%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
info->reason = (pmpkgreason_t)atol(_alpm_strtrim(line));
|
||||
@ -537,7 +538,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
* is currently only used in sync databases, and SIZE is
|
||||
* only used in local databases.
|
||||
*/
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
info->size = atol(_alpm_strtrim(line));
|
||||
@ -548,19 +549,19 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
} else if(strcmp(line, "%ISIZE%") == 0) {
|
||||
/* ISIZE (installed size) tag only appears in sync repositories,
|
||||
* not the local one. */
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
info->isize = atol(_alpm_strtrim(line));
|
||||
} else if(strcmp(line, "%MD5SUM%") == 0) {
|
||||
/* MD5SUM tag only appears in sync repositories,
|
||||
* not the local one. */
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
if(fgets(line, sline, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
STRDUP(info->md5sum, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%REPLACES%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->replaces = alpm_list_add(info->replaces, linedup);
|
||||
@ -583,13 +584,13 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
while(fgets(line, 256, fp)) {
|
||||
_alpm_strtrim(line);
|
||||
if(strcmp(line, "%FILES%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->files = alpm_list_add(info->files, linedup);
|
||||
}
|
||||
} else if(strcmp(line, "%BACKUP%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->backup = alpm_list_add(info->backup, linedup);
|
||||
@ -611,24 +612,24 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
fgets(line, 255, fp);
|
||||
_alpm_strtrim(line);
|
||||
if(strcmp(line, "%DEPENDS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
pmdepend_t *dep = _alpm_splitdep(_alpm_strtrim(line));
|
||||
info->depends = alpm_list_add(info->depends, dep);
|
||||
}
|
||||
} else if(strcmp(line, "%OPTDEPENDS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->optdepends = alpm_list_add(info->optdepends, linedup);
|
||||
}
|
||||
} else if(strcmp(line, "%CONFLICTS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->conflicts = alpm_list_add(info->conflicts, linedup);
|
||||
}
|
||||
} else if(strcmp(line, "%PROVIDES%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->provides = alpm_list_add(info->provides, linedup);
|
||||
@ -647,7 +648,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
fgets(line, 255, fp);
|
||||
_alpm_strtrim(line);
|
||||
if(strcmp(line, "%DELTAS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
|
||||
pmdelta_t *delta = _alpm_delta_parse(line);
|
||||
if(delta) {
|
||||
info->deltas = alpm_list_add(info->deltas, delta);
|
||||
|
@ -320,7 +320,8 @@ static int grep(const char *fn, const char *needle)
|
||||
}
|
||||
while(!feof(fp)) {
|
||||
char line[1024];
|
||||
fgets(line, 1024, fp);
|
||||
int sline = sizeof(line)-1;
|
||||
fgets(line, sline, fp);
|
||||
if(feof(fp)) {
|
||||
continue;
|
||||
}
|
||||
|
@ -580,6 +580,7 @@ void display_optdepends(pmpkg_t *pkg)
|
||||
static int question(short preset, char *fmt, va_list args)
|
||||
{
|
||||
char response[32];
|
||||
int sresponse = sizeof(response)-1;
|
||||
FILE *stream;
|
||||
|
||||
if(config->noconfirm) {
|
||||
@ -602,7 +603,7 @@ static int question(short preset, char *fmt, va_list args)
|
||||
return(preset);
|
||||
}
|
||||
|
||||
if(fgets(response, 32, stdin)) {
|
||||
if(fgets(response, sresponse, stdin)) {
|
||||
strtrim(response);
|
||||
if(strlen(response) == 0) {
|
||||
return(preset);
|
||||
|
Loading…
Reference in New Issue
Block a user