summary refs log tree commit diff
path: root/nis/nss_nisplus/nisplus-publickey.c
diff options
context:
space:
mode:
Diffstat (limited to 'nis/nss_nisplus/nisplus-publickey.c')
-rw-r--r--nis/nss_nisplus/nisplus-publickey.c75
1 files changed, 46 insertions, 29 deletions
diff --git a/nis/nss_nisplus/nisplus-publickey.c b/nis/nss_nisplus/nisplus-publickey.c
index 554da95754..99ec2a08ec 100644
--- a/nis/nss_nisplus/nisplus-publickey.c
+++ b/nis/nss_nisplus/nisplus-publickey.c
@@ -39,6 +39,7 @@ _nss_nisplus_getpublickey (const char *netname, char *pkey)
   nis_result *res;
   enum nss_status retval;
   char buf[NIS_MAXNAMELEN+2];
+  size_t slen;
   char *domain, *cptr;
   int len;
 
@@ -55,12 +56,15 @@ _nss_nisplus_getpublickey (const char *netname, char *pkey)
     return NSS_STATUS_UNAVAIL;
   domain++;
 
-  snprintf (buf, NIS_MAXNAMELEN,
-	    "[auth_name=%s,auth_type=DES],cred.org_dir.%s",
-	    netname, domain);
+  slen = snprintf (buf, NIS_MAXNAMELEN,
+		   "[auth_name=%s,auth_type=DES],cred.org_dir.%s",
+		   netname, domain);
 
-  if (buf[strlen (buf)-1] != '.')
-    strcat (buf, ".");
+  if (buf[slen - 1] != '.')
+    {
+      buf[slen++] = '.';
+      buf[slen] = '\0';
+    }
 
   res = nis_list (buf, USE_DGRAM+NO_AUTHINFO+FOLLOW_LINKS+FOLLOW_PATH,
 		  NULL, NULL);
@@ -107,6 +111,7 @@ _nss_nisplus_getsecretkey (const char *netname, char *skey, char *passwd)
   nis_result *res;
   enum nss_status retval;
   char buf[NIS_MAXNAMELEN+2];
+  size_t slen;
   char *domain, *cptr;
   int len;
 
@@ -123,12 +128,15 @@ _nss_nisplus_getsecretkey (const char *netname, char *skey, char *passwd)
     return NSS_STATUS_UNAVAIL;
   domain++;
 
-  snprintf (buf, NIS_MAXNAMELEN,
-	    "[auth_name=%s,auth_type=DES],cred.org_dir.%s",
-	    netname, domain);
+  slen = snprintf (buf, NIS_MAXNAMELEN,
+		   "[auth_name=%s,auth_type=DES],cred.org_dir.%s",
+		   netname, domain);
 
-  if (buf[strlen(buf)-1] != '.')
-    strcat(buf, ".");
+  if (buf[slen - 1] != '.')
+    {
+      buf[slen++] = '.';
+      buf[slen] = '\0';
+    }
 
   res = nis_list (buf, USE_DGRAM+NO_AUTHINFO+FOLLOW_LINKS+FOLLOW_PATH,
 		  NULL, NULL);
@@ -187,7 +195,7 @@ parse_grp_str (const char *s, gid_t *gidp, int *gidlenp, gid_t *gidlist)
 
   if (!s || (!isdigit (*s)))
     {
-      syslog (LOG_ERR, "netname2user: missing group id list in '%s'.", s);
+      syslog (LOG_ERR, _("netname2user: missing group id list in '%s'."), s);
       return NSS_STATUS_NOTFOUND;
     }
 
@@ -212,6 +220,7 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
   char *domain;
   nis_result *res;
   char sname[NIS_MAXNAMELEN+1]; /*  search criteria + table name */
+  size_t slen;
   char principal[NIS_MAXNAMELEN+1];
   int len;
 
@@ -227,11 +236,15 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
       (size_t) NIS_MAXNAMELEN)
     return NSS_STATUS_UNAVAIL;
 
-  snprintf (sname, NIS_MAXNAMELEN,
-	    "[auth_name=%s,auth_type=DES],cred.org_dir.%s",
-	    netname, domain);
-  if (sname[strlen (sname) - 1] != '.')
-    strcat(sname, ".");
+  slen = snprintf (sname, NIS_MAXNAMELEN,
+		   "[auth_name=%s,auth_type=DES],cred.org_dir.%s",
+		   netname, domain);
+
+  if (sname[slen - 1] != '.')
+    {
+      sname[slen++] = '.';
+      sname[slen] = '\0';
+    }
 
   /* must use authenticated call here */
   /* XXX but we cant, for now. XXX */
@@ -250,12 +263,12 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
       return NSS_STATUS_NOTFOUND;
     case NIS_S_NOTFOUND:
     case NIS_TRYAGAIN:
-      syslog (LOG_ERR, "netname2user: (nis+ lookup): %s\n",
+      syslog (LOG_ERR, _("netname2user: (nis+ lookup): %s\n"),
 	      nis_sperrno (res->status));
       nis_freeresult (res);
       return NSS_STATUS_TRYAGAIN;
     default:
-      syslog (LOG_ERR, "netname2user: (nis+ lookup): %s\n",
+      syslog (LOG_ERR, _("netname2user: (nis+ lookup): %s\n"),
 	      nis_sperrno (res->status));
       nis_freeresult (res);
       return NSS_STATUS_UNAVAIL;
@@ -286,17 +299,21 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
    *      LOCAL entry in **local** cred table.
    */
   domain = nis_local_directory ();
-  if ((strlen (principal)+strlen (domain)+45) >
-      (size_t) NIS_MAXNAMELEN)
+  if ((strlen (principal) + strlen (domain) + 45) > (size_t) NIS_MAXNAMELEN)
     {
       syslog (LOG_ERR, _("netname2user: principal name '%s' too long"),
 	      principal);
       return NSS_STATUS_UNAVAIL;
     }
-  sprintf (sname, "[cname=%s,auth_type=LOCAL],cred.org_dir.%s",
-	  principal, domain);
-  if (sname[strlen(sname) - 1] != '.')
-    strcat(sname, ".");
+
+  slen = sprintf (sname, "[cname=%s,auth_type=LOCAL],cred.org_dir.%s",
+		  principal, domain);
+
+  if (sname[slen - 1] != '.')
+    {
+      sname[slen++] = '.';
+      sname[slen] = '\0';
+    }
 
   /* must use authenticated call here */
   /* XXX but we cant, for now. XXX */
@@ -312,7 +329,7 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
       return NSS_STATUS_NOTFOUND;
     case NIS_S_NOTFOUND:
     case NIS_TRYAGAIN:
-      syslog (LOG_ERR, "netname2user: (nis+ lookup): %s\n",
+      syslog (LOG_ERR, _("netname2user: (nis+ lookup): %s\n"),
 	      nis_sperrno (res->status));
       nis_freeresult (res);
       return NSS_STATUS_TRYAGAIN;
@@ -320,7 +337,7 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
     case NIS_S_SUCCESS:
       break;   /* go and do something useful */
     default:
-      syslog (LOG_ERR, "netname2user: (nis+ lookup): %s\n",
+      syslog (LOG_ERR, _("netname2user: (nis+ lookup): %s\n"),
 	      nis_sperrno (res->status));
       nis_freeresult (res);
       return NSS_STATUS_UNAVAIL;
@@ -333,9 +350,9 @@ _nss_nisplus_netname2user (char netname[MAXNETNAMELEN + 1], uid_t *uidp,
        * Something wrong with cred table.
        * Warn user and continue.
        */
-      syslog(LOG_ALERT,
-	     _("netname2user: LOCAL entry for %s in directory %s not unique"),
-	     netname, domain);
+      syslog (LOG_ALERT,
+	      _("netname2user: LOCAL entry for %s in directory %s not unique"),
+	      netname, domain);
     }
   /* Fetch the uid */
   *uidp = atoi (ENTRY_VAL (res->objects.objects_val, 2));