Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/passwd Stop using functions deprecated by Heimdal. ...



details:   https://anonhg.NetBSD.org/src/rev/c32e66ca5b7f
branches:  trunk
changeset: 764468:c32e66ca5b7f
user:      elric <elric%NetBSD.org@localhost>
date:      Sun Apr 24 21:16:43 2011 +0000

description:
Stop using functions deprecated by Heimdal.  Also, if krb5_init_context()
fails, we can't use Kerberos functions to grab error strings, we
resort to strerror(3) which is what Heimdal's deprecated function
does in this case.

diffstat:

 usr.bin/passwd/krb5_passwd.c |  84 ++++++++++++++++++++++++++++++++-----------
 1 files changed, 62 insertions(+), 22 deletions(-)

diffs (162 lines):

diff -r df93eb9fae2a -r c32e66ca5b7f usr.bin/passwd/krb5_passwd.c
--- a/usr.bin/passwd/krb5_passwd.c      Sun Apr 24 20:30:38 2011 +0000
+++ b/usr.bin/passwd/krb5_passwd.c      Sun Apr 24 21:16:43 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: krb5_passwd.c,v 1.18 2009/04/18 09:04:34 mlelstv Exp $ */
+/* $NetBSD: krb5_passwd.c,v 1.19 2011/04/24 21:16:43 elric Exp $ */
 
 /*
  * Copyright (c) 2000, 2005 The NetBSD Foundation, Inc.
@@ -68,13 +68,14 @@
 {
        krb5_context context;
        krb5_error_code ret;
-       krb5_get_init_creds_opt opt;
+       krb5_get_init_creds_opt *opt;
        krb5_principal principal;
        krb5_creds cred;
        int result_code;
        krb5_data result_code_string, result_string;
        char pwbuf[BUFSIZ];
        int ch;
+       const char *errtxt;
 
        while ((ch = getopt(argc, argv, "5ku:")) != -1) {
                switch (ch) {
@@ -125,21 +126,34 @@
        if (ret != 0) {
                if (ret == ENXIO)
                        errx(1, "Kerberos 5 not in use.");
-               warnx("Unable to initialize Kerberos 5: %s",
-                   krb5_get_err_text(context, ret));
-               goto bad;
+               errx(1, "Unable to initialize Kerberos 5: %s", strerror(ret));
        }
 
-       krb5_get_init_creds_opt_init(&opt);
+       ret = krb5_get_init_creds_opt_alloc(context, &opt);
+       if (ret) {
+               errtxt = krb5_get_error_message(context, ret);
+               if (errtxt != NULL) {
+                       warnx("failed to allocate opts: %s", errtxt);
+                       krb5_free_error_message(context, errtxt);
+               } else {
+                       warnx("failed to allocate opts: %d", ret);
+               }
+               goto bad;
+       }
     
-       krb5_get_init_creds_opt_set_tkt_life(&opt, 300L);
-       krb5_get_init_creds_opt_set_forwardable(&opt, FALSE);
-       krb5_get_init_creds_opt_set_proxiable(&opt, FALSE);
+       krb5_get_init_creds_opt_set_tkt_life(opt, 300L);
+       krb5_get_init_creds_opt_set_forwardable(opt, FALSE);
+       krb5_get_init_creds_opt_set_proxiable(opt, FALSE);
 
        ret = krb5_parse_name(context, username, &principal);
        if (ret) {
-               warnx("failed to parse principal: %s", 
-                   krb5_get_err_text(context, ret));
+               errtxt = krb5_get_error_message(context, ret);
+               if (errtxt != NULL) {
+                       warnx("failed to parse principal: %s", errtxt);
+                       krb5_free_error_message(context, errtxt);
+               } else {
+                       warnx("failed to parse principal: %d", ret);
+               }
                goto bad;
        }
 
@@ -151,7 +165,7 @@
                                           NULL,
                                           0L,
                                           "kadmin/changepw",
-                                          &opt);
+                                          opt);
 
 
        switch (ret) {
@@ -168,8 +182,13 @@
                goto bad;
 
        default:
-               warnx("failed to get credentials: %s", 
-                   krb5_get_err_text(context, ret));
+               errtxt = krb5_get_error_message(context, ret);
+               if (errtxt != NULL) {
+                       warnx("failed to get credentials: %s", errtxt);
+                       krb5_free_error_message(context, errtxt);
+               } else {
+                       warnx("failed to get credentials: %d", ret);
+               }
                goto bad;
        }
 
@@ -186,8 +205,13 @@
                                &result_code_string,
                                &result_string);
        if (ret) {
-               warnx("unable to set password: %s",
-                   krb5_get_err_text(context, ret));
+               errtxt = krb5_get_error_message(context, ret);
+               if (errtxt != NULL) {
+                       warnx("unable to set password: %s", errtxt);
+                       krb5_free_error_message(context, errtxt);
+               } else {
+                       warnx("unable to set password: %d", ret);
+               }
                goto bad;
        }
 
@@ -271,11 +295,17 @@
     int result_code;
     krb5_data result_code_string, result_string;
     char pwbuf[BUFSIZ];
+    const char *errtxt;
 
     ret = krb5_init_context (&context);
     if (ret) {
-       warnx("failed kerberos initialisation: %s", 
-             krb5_get_err_text(context, ret));
+       errtxt = krb5_get_error_message(context, ret);
+       if (errtxt != NULL) {
+           warnx("failed kerberos initialisation: %s", errtxt);
+           krb5_free_error_message(context, errtxt);
+       } else {
+           warnx("failed kerberos initialisation: %d", ret);
+       }
        return 1;
     }
 
@@ -288,8 +318,13 @@
     if(username != NULL) {
         ret = krb5_parse_name (context, username, &principal);
         if (ret) {
-           warnx("failed to parse principal: %s", 
-                 krb5_get_err_text(context, ret));
+           errtxt = krb5_get_error_message(context, ret);
+           if (errtxt != NULL) {
+               warnx("failed to parse principal: %s", errtxt);
+               krb5_free_error_message(context, errtxt);
+           } else {
+               warnx("failed to parse principal: %d", ret);
+           }
            return 1;
        }
     } else
@@ -317,8 +352,13 @@
        return 1;
         break;
     default:
-       warnx("failed to get credentials: %s", 
-             krb5_get_err_text(context, ret));
+       errtxt = krb5_get_error_message(context, ret);
+       if (errtxt != NULL) {
+           warnx("failed to get credentials: %s", errtxt);
+           krb5_free_error_message(context, errtxt);
+       } else {
+           warnx("failed to get credentials: %d", ret);
+       }
        return 1;
     }
     krb5_data_zero (&result_code_string);



Home | Main Index | Thread Index | Old Index