[PATCH] setenv|putenv rc checking (lib)
joerg at britannica.bec.de
joerg at britannica.bec.de
Thu Sep 29 05:26:42 PDT 2005
On Thu, Sep 29, 2005 at 03:43:08PM +0400, Alexey Slynko wrote:
> Index: libutil/login_class.c
> ===================================================================
> RCS file: /mnt/share/dragonfly-cvs/src/lib/libutil/login_class.c,v
> retrieving revision 1.4
> diff -u -r1.4 login_class.c
> --- libutil/login_class.c 4 Mar 2005 04:31:11 -0000 1.4
> +++ libutil/login_class.c 29 Sep 2005 01:22:16 -0000
> @@ -31,6 +31,7 @@
> #include <sys/resource.h>
> #include <sys/rtprio.h>
>
> +#include <err.h>
> #include <errno.h>
> #include <fcntl.h>
> #include <paths.h>
> @@ -210,10 +211,12 @@
> char * np = substvar(var, pwd, hlen, pch, nlen);
>
> if (np != NULL) {
> - setenv(vars->var, np, vars->overwrite);
> + if (setenv(vars->var, np, vars->overwrite) == ENOMEM)
> + err(1, "setenv: cannot set %s=%s", vars->var, np);
> free(np);
> } else if (vars->def != NULL) {
> - setenv(vars->var, vars->def, 0);
> + if (setenv(vars->var, vars->def, 0) == ENOMEM)
> + err(1, "setenv: cannot set %s=%s", vars->var, vars->def);
> }
> ++vars;
> }
> @@ -234,7 +237,8 @@
>
> *p++ = '\0';
> if ((np = substvar(p, pwd, hlen, pch, nlen)) != NULL) {
> - setenv(*set_env, np, 1);
> + if (setenv(*set_env, np, 1) == ENOMEM)
> + err(1, "setenv: cannot set %s=%s", *set_env, np);
> free(np);
> }
> }
No err from a library function! Either return a sane return value or
change the interface if it doesn't allow error handling.
Joerg
More information about the Submit
mailing list