Ken'ichi Ohmichi wrote:
> Hi,
> 
> By using sizeof() in memset(), we will not need to care of the buffer
> size.
> 
> 
> Thanks
> Ken'ichi Ohmichi
> 
> Signed-off-by: Ken'ichi Ohmichi <[email protected]>
> ---
>  src/api.c |   37 +++++++++++++------------------------
>  1 files changed, 13 insertions(+), 24 deletions(-)
> 
> diff --git a/src/api.c b/src/api.c
> index 4f88d20..75dc92a 100644
> --- a/src/api.c
> +++ b/src/api.c
> @@ -268,7 +268,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>       FILE *fp = NULL;
>  
>       /* Buffer to store the line we're working on */
> -     char *buff = NULL;
> +     char buff[CGROUP_RULE_MAXLINE] = { '\0' };
>  
>       /* Iterator for the line we're working on */
>       char *itr = NULL;
> @@ -322,14 +322,6 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>               goto unlock;
>       }
>  
> -     buff = calloc(CGROUP_RULE_MAXLINE, sizeof(char));
> -     if (!buff) {
> -             cgroup_dbg("Out of memory?  Error: %s\n", strerror(errno));
> -             last_errno = errno;
> -             ret = ECGOTHER;
> -             goto close;
> -     }
> -
>       /* Determine which list we're using. */
>       if (cache)
>               lst = &rl;
> @@ -342,7 +334,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>  
>       /* Now, parse the configuration file one line at a time. */
>       cgroup_dbg("Parsing configuration file.\n");
> -     while ((itr = fgets(buff, CGROUP_RULE_MAXLINE, fp)) != NULL) {
> +     while ((itr = fgets(buff, sizeof(buff), fp)) != NULL) {
>               linenum++;
>  
>               /* We ignore anything after a # sign as comments. */
> @@ -354,7 +346,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>                       *itr = '\0';
>  
>               /* Now, skip any leading tabs and spaces. */
> -             itr = buff;
> +             itr = &buff;

Ths leads to warning: assignment from incompatible pointer type. Better 
keep it as it was: itr = buff;.

The rest of the patch looks OK to me.

>               while (itr && isblank(*itr))
>                       itr++;
>  
> @@ -369,7 +361,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>               if (skipped && *itr == '%') {
>                       cgroup_dbg("Warning: Skipped child of invalid rule,"
>                                       " line %d.\n", linenum);
> -                     memset(buff, '\0', CGROUP_RULE_MAXLINE);
> +                     memset(buff, '\0', sizeof(buff));
>                       continue;
>               }
>  
> @@ -378,9 +370,9 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>                * there's an error in the configuration file.
>                */
>               skipped = false;
> -             memset(user, '\0', LOGIN_NAME_MAX);
> -             memset(controllers, '\0', CG_CONTROLLER_MAX);
> -             memset(destination, '\0', FILENAME_MAX);
> +             memset(user, '\0', sizeof(user));
> +             memset(controllers, '\0', sizeof(controllers));
> +             memset(destination, '\0', sizeof(destination));
>               i = sscanf(itr, "%s%s%s", user, controllers, destination);
>               if (i != 3) {
>                       cgroup_dbg("Failed to parse configuration file on"
> @@ -402,7 +394,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>                       cgroup_dbg("Parsing of configuration file"
>                               " complete.\n\n");
>                       ret = -1;
> -                     goto cleanup;
> +                     goto close;
>               }
>               if (strncmp(user, "@", 1) == 0) {
>                       /* New GID rule. */
> @@ -414,7 +406,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>                               cgroup_dbg("Warning: Entry for %s not"
>                                               "found.  Skipping rule on line"
>                                               " %d.\n", itr, linenum);
> -                             memset(buff, '\0', CGROUP_RULE_MAXLINE);
> +                             memset(buff, '\0', sizeof(buff));
>                               skipped = true;
>                               continue;
>                       }
> @@ -431,7 +423,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>                               cgroup_dbg("Warning: Entry for %s not"
>                                               "found.  Skipping rule on line"
>                                               " %d.\n", user, linenum);
> -                             memset(buff, '\0', CGROUP_RULE_MAXLINE);
> +                             memset(buff, '\0', sizeof(buff));
>                               skipped = true;
>                               continue;
>                       }
> @@ -471,7 +463,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>                               strerror(errno));
>                       last_errno = errno;
>                       ret = ECGOTHER;
> -                     goto cleanup;
> +                     goto close;
>               }
>  
>               newrule->uid = uid;
> @@ -524,7 +516,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>               cgroup_dbg("\n");
>  
>               /* Finally, clear the buffer. */
> -             memset(buff, '\0', CGROUP_RULE_MAXLINE);
> +             memset(buff, '\0', sizeof(buff));
>               grp = NULL;
>               pwd = NULL;
>       }
> @@ -532,7 +524,7 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
> gid_t mgid)
>       /* If we make it here, there were no errors. */
>       cgroup_dbg("Parsing of configuration file complete.\n\n");
>       ret = (matched && !cache) ? -1 : 0;
> -     goto cleanup;
> +     goto close;
>  
>  destroyrule:
>       cgroup_free_rule(newrule);
> @@ -540,9 +532,6 @@ destroyrule:
>  parsefail:
>       ret = ECGROUPPARSEFAIL;
>  
> -cleanup:
> -     free(buff);
> -
>  close:
>       fclose(fp);
>  unlock:
> 
> ------------------------------------------------------------------------------
> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
> is a gathering of tech-side developers & brand creativity professionals. Meet
> the minds behind Google Creative Lab, Visual Complexity, Processing, & 
> iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
> Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
> _______________________________________________
> Libcg-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/libcg-devel


------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to