]> git.cameronkatri.com Git - pw-darwin.git/blobdiff - chpass/pw_yp.c
Close PR #10264. Don't bail directly out of passwd/chpass in my_yp_match().
[pw-darwin.git] / chpass / pw_yp.c
index 777ec54d4633a88251c544a87b244a84d957bdcb..dbc262bcacde4df40ea229036f68cf3dc5e8f4bf 100644 (file)
@@ -35,7 +35,7 @@
  * Center for Telecommunications Research
  * Columbia University, New York City
  *
- *     $Id: pw_yp.c,v 1.11 1997/07/29 15:45:36 wpaul Exp $
+ *     $Id: pw_yp.c,v 1.13 1998/10/17 14:08:12 bde Exp $
  */
 
 #ifdef YP
@@ -195,10 +195,19 @@ static int my_yp_match(server, domain, map, key, keylen, result, resultlen)
 
        bzero((char *)buf, sizeof(buf));
 
+       /*
+        * Don't make this a fatal error. The inability to contact
+        * a server is, for our purposes, equivalent to not finding
+        * the record we were looking for. Letting use_yp() know
+        * that the lookup failed is sufficient.
+        */
        if ((clnt = clnt_create(server, YPPROG,YPVERS,"udp")) == NULL) {
+               return(1);
+#ifdef notdef
                warnx("failed to create UDP handle: %s",
                                        clnt_spcreateerror(server));
                pw_error(tempname, 0, 1);
+#endif
        }
 
        ypkey.domain = domain;
@@ -208,13 +217,19 @@ static int my_yp_match(server, domain, map, key, keylen, result, resultlen)
 
        if ((ypval = ypproc_match_2(&ypkey, clnt)) == NULL) {
                clnt_destroy(clnt);
+               return(1);
+#ifdef notdef
                warnx("%s",clnt_sperror(clnt,"YPPROC_MATCH failed"));
                pw_error(tempname, 0, 1);
+#endif
        }
 
        clnt_destroy(clnt);
 
        if (ypval->stat != YP_TRUE) {
+               xdr_free(xdr_ypresp_val, (char *)ypval);
+               return(1);
+#ifdef notdef
                int stat = ypval->stat;
                xdr_free(xdr_ypresp_val, (char *)ypval);
                if (stat == YP_NOMAP && strstr(map, "master.passwd"))
@@ -223,6 +238,7 @@ static int my_yp_match(server, domain, map, key, keylen, result, resultlen)
                        return(1);
                warnx("ypmatch failed: %s", yperr_string(ypprot_err(stat)));
                pw_error(tempname, 0, 1);
+#endif
        }
 
 
@@ -254,7 +270,7 @@ int use_yp (user, uid, which)
        char ubuf[UT_NAMESIZE + 2];
 
        if (which) {
-               snprintf(ubuf, sizeof(ubuf), "%lu", uid);
+               snprintf(ubuf, sizeof(ubuf), "%lu", (unsigned long)uid);
                user = (char *)&ubuf;
        }