Pacman-g2'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 <[email protected]>
---
 lib/libpacman/be_files.c |   23 ++++++++++++-----------
 lib/libpacman/util.c     |   12 ++++++++----
 src/pacman-g2/log.c      |    3 ++-
 3 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/lib/libpacman/be_files.c b/lib/libpacman/be_files.c
index 55c5744..3fedaad 100644
--- a/lib/libpacman/be_files.c
+++ b/lib/libpacman/be_files.c
@@ -218,6 +218,7 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
        struct stat buf;
        char path[PATH_MAX];
        char line[512];
+       int sline = sizeof(line)-1;
        pmlist_t *i;
        char *ptr;
 
@@ -250,7 +251,7 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
                        }
                        _pacman_strtrim(line);
                        if(!strcmp(line, "%DESC%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->desc_localized = 
_pacman_list_add(info->desc_localized, strdup(line));
                                }
                                STRNCPY(info->desc, 
(char*)info->desc_localized->data, sizeof(info->desc));
@@ -262,7 +263,7 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
                                }
                                _pacman_strtrim(info->desc);
                        } else if(!strcmp(line, "%GROUPS%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->groups = 
_pacman_list_add(info->groups, strdup(line));
                                }
                        } else if(!strcmp(line, "%URL%")) {
@@ -271,7 +272,7 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
                                }
                                _pacman_strtrim(info->url);
                        } else if(!strcmp(line, "%LICENSE%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->license = 
_pacman_list_add(info->license, strdup(line));
                                }
                        } else if(!strcmp(line, "%ARCH%")) {
@@ -346,7 +347,7 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
                        } else if(!strcmp(line, "%REPLACES%")) {
                                /* the REPLACES tag is special -- it only 
appears in sync repositories,
                                 * not the local one. */
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->replaces = 
_pacman_list_add(info->replaces, strdup(line));
                                }
                        } else if(!strcmp(line, "%FORCE%")) {
@@ -374,7 +375,7 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
                while(fgets(line, 256, fp)) {
                        _pacman_strtrim(line);
                        if(!strcmp(line, "%FILES%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        if((ptr = strchr(line, '|'))) {
                                                /* just ignore the content 
after the pipe for now */
                                                *ptr = '\0';
@@ -382,7 +383,7 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
                                        info->files = 
_pacman_list_add(info->files, strdup(line));
                                }
                        } else if(!strcmp(line, "%BACKUP%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->backup = 
_pacman_list_add(info->backup, strdup(line));
                                }
                        }
@@ -403,25 +404,25 @@ int _pacman_db_read(pmdb_t *db, unsigned int inforeq, 
pmpkg_t *info)
                        fgets(line, 255, fp);
                        _pacman_strtrim(line);
                        if(!strcmp(line, "%DEPENDS%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->depends = 
_pacman_list_add(info->depends, strdup(line));
                                }
                        } else if(!strcmp(line, "%REQUIREDBY%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->requiredby = 
_pacman_list_add(info->requiredby, strdup(line));
                                }
                        } else if(!strcmp(line, "%CONFLICTS%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->conflicts = 
_pacman_list_add(info->conflicts, strdup(line));
                                }
                        } else if(!strcmp(line, "%PROVIDES%")) {
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->provides = 
_pacman_list_add(info->provides, strdup(line));
                                }
                        } else if(!strcmp(line, "%REPLACES%")) {
                                /* the REPLACES tag is special -- it only 
appears in sync repositories,
                                 * not the local one. */
-                               while(fgets(line, 512, fp) && 
strlen(_pacman_strtrim(line))) {
+                               while(fgets(line, sline, fp) && 
strlen(_pacman_strtrim(line))) {
                                        info->replaces = 
_pacman_list_add(info->replaces, strdup(line));
                                }
                        } else if(!strcmp(line, "%FORCE%")) {
diff --git a/lib/libpacman/util.c b/lib/libpacman/util.c
index b763445..44feb17 100644
--- a/lib/libpacman/util.c
+++ b/lib/libpacman/util.c
@@ -411,10 +411,11 @@ int _pacman_rmrf(char *path)
 int _pacman_logaction(unsigned char usesyslog, FILE *f, char *fmt, ...)
 {
        char msg[1024];
+       int smsg = sizeof(msg)-1;
        va_list args;
 
        va_start(args, fmt);
-       vsnprintf(msg, 1024, fmt, args);
+       vsnprintf(msg, smsg, fmt, args);
        va_end(args);
 
        if(usesyslog) {
@@ -468,7 +469,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;
                }
@@ -573,7 +575,8 @@ int _pacman_runscriptlet(char *root, char *installfn, char 
*script, char *ver, c
                }
                while(!feof(pp)) {
                        char line[1024];
-                       if(fgets(line, 1024, pp) == NULL)
+                       sline = sizeof(line)-1;
+                       if(fgets(line, sline, pp) == NULL)
                                break;
                        /* "START <event desc>" */
                        if((strlen(line) > strlen(STARTSTR)) && !strncmp(line, 
STARTSTR, strlen(STARTSTR))) {
@@ -681,7 +684,8 @@ int _pacman_runhook(char *root, char *hookdir, char 
*hookname, pmtrans_t *trans)
                        }
                        while(!feof(pp)) {
                                char line[1024];
-                               if(fgets(line, 1024, pp) == NULL)
+                               sline = sizeof(line)-1;
+                               if(fgets(line, sline, pp) == NULL)
                                        break;
                                /* "START <event desc>" */
                                if((strlen(line) > strlen(STARTSTR)) && 
!strncmp(line, STARTSTR, strlen(STARTSTR))) {
diff --git a/src/pacman-g2/log.c b/src/pacman-g2/log.c
index 5b3cb36..183c3d0 100644
--- a/src/pacman-g2/log.c
+++ b/src/pacman-g2/log.c
@@ -133,6 +133,7 @@ int yesno(char *fmt, ...)
 {
        char str[LOG_STR_LEN];
        char response[32];
+       int sresponse = sizeof(response)-1;
        va_list args;
 
        if(config->noconfirm) {
@@ -144,7 +145,7 @@ int yesno(char *fmt, ...)
        va_end(args);
        pm_fprintf(stderr, NL, str);
 
-       if(fgets(response, 32, stdin)) {
+       if(fgets(response, sresponse, stdin)) {
                /* trim whitespace and newlines */
                char *pch = response;
                while(isspace(*pch)) {
-- 
1.6.5

_______________________________________________
Frugalware-devel mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-devel

Reply via email to