aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-04-28 17:01:50 +0000
committerUlrich Drepper <drepper@redhat.com>2006-04-28 17:01:50 +0000
commit912873399c3897bfc35c6770ef1a13ad6e991bf6 (patch)
tree9f681673e8dbb46686f0845fc5767c113ee80262
parent464c9fadafa7e8c30d0e2fd5914e0d6011f1f8ef (diff)
downloadglibc-912873399c3897bfc35c6770ef1a13ad6e991bf6.zip
glibc-912873399c3897bfc35c6770ef1a13ad6e991bf6.tar.gz
glibc-912873399c3897bfc35c6770ef1a13ad6e991bf6.tar.bz2
* nis/ypclnt.c (__xdr_ypresp_all): Minor optimization in string
handling. Fix typo in comment.
-rw-r--r--ChangeLog5
-rw-r--r--nis/ypclnt.c10
-rw-r--r--nscd/connections.c13
3 files changed, 21 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index ea5e1ab..b5b975e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-28 Ulrich Drepper <drepper@redhat.com>
+
+ * nis/ypclnt.c (__xdr_ypresp_all): Minor optimization in string
+ handling. Fix typo in comment.
+
2006-04-27 Ulrich Drepper <drepper@redhat.com>
* nscd/connections.c (restart): If we want to switch back to the
diff --git a/nis/ypclnt.c b/nis/ypclnt.c
index 65bc8d1..ae04ee9 100644
--- a/nis/ypclnt.c
+++ b/nis/ypclnt.c
@@ -686,10 +686,10 @@ __xdr_ypresp_all (XDR *xdrs, struct ypresp_all_data *objp)
if we don't modify the length. So add an extra NUL
character to avoid trouble with broken code. */
objp->status = YP_TRUE;
- memcpy (key, resp.ypresp_all_u.val.key.keydat_val, keylen);
- key[keylen] = '\0';
- memcpy (val, resp.ypresp_all_u.val.val.valdat_val, vallen);
- val[vallen] = '\0';
+ *((char *) __mempcpy (key, resp.ypresp_all_u.val.key.keydat_val,
+ keylen)) = '\0';
+ *((char *) __mempcpy (val, resp.ypresp_all_u.val.val.valdat_val,
+ vallen)) = '\0';
xdr_free ((xdrproc_t) xdr_ypresp_all, (char *) &resp);
if ((*objp->foreach) (objp->status, key, keylen,
val, vallen, objp->data))
@@ -700,7 +700,7 @@ __xdr_ypresp_all (XDR *xdrs, struct ypresp_all_data *objp)
objp->status = resp.ypresp_all_u.val.stat;
xdr_free ((xdrproc_t) xdr_ypresp_all, (char *) &resp);
/* Sun says we don't need to make this call, but must return
- immediatly. Since Solaris makes this call, we will call
+ immediately. Since Solaris makes this call, we will call
the callback function, too. */
(*objp->foreach) (objp->status, NULL, 0, NULL, 0, objp->data);
return TRUE;
diff --git a/nscd/connections.c b/nscd/connections.c
index 0de7945..38d5f81 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -1873,14 +1873,23 @@ finish_drop_privileges (void)
error (EXIT_FAILURE, errno, _("setgroups failed"));
}
- if (setresgid (server_gid, server_gid, old_gid) == -1)
+ int res;
+ if (paranoia)
+ res = setresgid (server_gid, server_gid, old_gid);
+ else
+ res = setgid (server_gid);
+ if (res == -1)
{
dbg_log (_("Failed to run nscd as user '%s'"), server_user);
perror ("setgid");
exit (4);
}
- if (setresuid (server_uid, server_uid, old_uid) == -1)
+ if (paranoia)
+ res = setresuid (server_uid, server_uid, old_uid);
+ else
+ res = setuid (server_uid);
+ if (res == -1)
{
dbg_log (_("Failed to run nscd as user '%s'"), server_user);
perror ("setuid");