[pacman-dev] [PATCH] Size handling was changed in fgets() functions

Laszlo Papp djszapi at archlinux.us
Wed Sep 30 22:57:58 EDT 2009


Pacman's fgets function in the API used hardcoded numbers to identify the size.
This is not good practoce, so replace them with sizeof handling.

Signed-off-by: Laszlo Papp <djszapi at archlinux.us>
---

 lib/libalpm/be_files.c |   48 ++++++++++++++++++++++++------

------------------
 lib/libalpm/trans.c    |    2 +-
 src/pacman/util.c      |    2 +-
 3 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/lib/libalpm/be_files.c b/lib/libalpm/be_files.c
index 03a1463..01be4a2 100644
--- a/lib/libalpm/be_files.c
+++ b/lib/libalpm/be_files.c
@@ -409,7 +409,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, sizeof(line));

       pkgpath = get_pkgpath(db, info);

@@ -433,7 +433,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, sizeof(line)-1, fp) == NULL)
{
                                       goto error;
                               }
                               if(strcmp(_alpm_strtrim(line), info->name) !=
0) {
@@ -441,7 +441,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, sizeof(line)-1, fp) == NULL)
{
                                       goto error;
                               }
                               if(strcmp(_alpm_strtrim(line), info->version)
!= 0) {
@@ -449,39 +449,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, sizeof(line)-1, 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, sizeof(line)-1, 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, sizeof(line)-1, 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, sizeof(line)-1, 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, sizeof(line)-1, 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, sizeof(line)-1, 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, sizeof(line)-1, fp) == NULL)
{
                                       goto error;
                               }
                               _alpm_strtrim(line);
@@ -497,7 +497,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, sizeof(line)-1, fp) == NULL)
{
                                       goto error;
                               }
                               _alpm_strtrim(line);
@@ -513,12 +513,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, sizeof(line)-1, 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, sizeof(line)-1, fp) == NULL)
{
                                       goto error;
                               }
                               info->reason =
(pmpkgreason_t)atol(_alpm_strtrim(line));
@@ -528,7 +528,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, sizeof(line)-1, fp) == NULL)
{
                                       goto error;
                               }
                               info->size = atol(_alpm_strtrim(line));
@@ -539,19 +539,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, sizeof(line)-1, 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, sizeof(line)-1, 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, sizeof(line)-1, fp) &&
strlen(_alpm_strtrim(line))) {
                                       char *linedup;
                                       STRDUP(linedup, _alpm_strtrim(line),
goto error);
                                       info->replaces =
alpm_list_add(info->replaces, linedup);
@@ -574,13 +574,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, sizeof(line)-1, 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, sizeof(line)-1, fp) &&
strlen(_alpm_strtrim(line))) {
                                       char *linedup;
                                       STRDUP(linedup, _alpm_strtrim(line),
goto error);
                                       info->backup =
alpm_list_add(info->backup, linedup);
@@ -602,24 +602,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, sizeof(line)-1, 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, sizeof(line)-1, 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, sizeof(line)-1, 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, sizeof(line)-1, fp) &&
strlen(_alpm_strtrim(line))) {
                                       char *linedup;
                                       STRDUP(linedup, _alpm_strtrim(line),
goto error);
                                       info->provides =
alpm_list_add(info->provides, linedup);
@@ -638,7 +638,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, sizeof(line)-1 fp)
&& strlen(_alpm_strtrim(line))) {
                                               pmdelta_t *delta =
_alpm_delta_parse(line);
                                               if(delta) {
                                                       info->deltas =
alpm_list_add(info->deltas, delta);
diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index c99f596..c182510 100644
--- a/lib/libalpm/trans.c
+++ b/lib/libalpm/trans.c
@@ -320,7 +320,7 @@ static int grep(const char *fn, const char *needle)
       }
       while(!feof(fp)) {
               char line[1024];
-               fgets(line, 1024, fp);
+               fgets(line, sizeof(line), fp);
               if(feof(fp)) {
                       continue;
               }
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 353aae3..c931bb2 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -638,7 +638,7 @@ static int question(short preset, char *fmt, va_list
args)
               return(preset);
       }

-       if(fgets(response, 32, stdin)) {
+       if(fgets(response, sizeof(response), stdin)) {
               strtrim(response);
               if(strlen(response) == 0) {
                       return(preset);
--
1.6.4.4


More information about the pacman-dev mailing list