coar        99/03/10 12:58:27

  Modified:    src/support htpasswd.c
  Log:
        Argh.. what happens when you've got too many patches going
        at once..
  
  Revision  Changes    Path
  1.23      +12 -9     apache-1.3/src/support/htpasswd.c
  
  Index: htpasswd.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/support/htpasswd.c,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- htpasswd.c        1999/03/10 20:36:46     1.22
  +++ htpasswd.c        1999/03/10 20:58:23     1.23
  @@ -69,10 +69,12 @@
    *
    * Exit values:
    *  0: Success
  - *  1: Failure; file permission problem
  + *  1: Failure; file access/permission problem
    *  2: Failure; command line syntax problem (usage message issued)
    *  3: Failure; password verification failure
    *  4: Failure; operation interrupted (such as with CTRL/C)
  + *  5: Failure; buffer would overflow (username, filename, or computed
  + *     record too long)
    */
   
   #include "ap_config.h"
  @@ -104,6 +106,7 @@
   #define ERR_SYNTAX 2
   #define ERR_PWMISMATCH 3
   #define ERR_INTERRUPTED 4
  +#define ERR_OVERFLOW 5
   
   /*
    * This needs to be declared statically so the signal handler can
  @@ -223,7 +226,7 @@
   #endif
   
   /*
  - * Make a password record from the given information.  A true return
  + * Make a password record from the given information.  A zero return
    * indicates success; failure means that the output buffer contains an
    * error message instead.
    */
  @@ -236,7 +239,7 @@
       pw = strd((char *) getpass("New password: "));
       if (strcmp(pw, (char *) getpass("Re-type new password: "))) {
        ap_cpystrn(record, "password verification error", (rlen - 1));
  -     return 0;
  +     return ERR_PWMISMATCH;
       }
       (void) srand((int) time((time_t *) NULL));
       to64(&salt[0], rand(), 8);
  @@ -261,12 +264,12 @@
        */
       if ((strlen(user) + 1 + strlen(cpw)) > (rlen - 1)) {
        ap_cpystrn(record, "resultant record too long", (rlen - 1));
  -     return 0;
  +     return ERR_OVERFLOW;
       }
       strcpy(record, user);
       strcat(record, ":");
       strcat(record, cpw);
  -    return 1;
  +    return 0;
   }
   
   static int usage(void)
  @@ -413,12 +416,12 @@
       }
       if (strlen(argv[i]) > (sizeof(pwfilename) - 1)) {
        fprintf(stderr, "%s: filename too long\n", argv[0]);
  -     return 1;
  +     return ERR_OVERFLOW;
       }
       strcpy(pwfilename, argv[i]);
       if (strlen(argv[i + 1]) > (sizeof(user) - 1)) {
        fprintf(stderr, "%s: username too long\n", argv[0]);
  -     return 1;
  +     return ERR_OVERFLOW;
       }
       strcpy(user, argv[i + 1]);
   
  @@ -477,9 +480,9 @@
        * Any error message text is returned in the record buffer, since
        * the mkrecord() routine doesn't have access to argv[].
        */
  -    if (! mkrecord(user, record, sizeof(record) - 1, alg)) {
  +    if ((i = mkrecord(user, record, sizeof(record) - 1, alg)) != 0) {
        fprintf(stderr, "%s: %s\n", argv[0], record);
  -     exit(ERR_PWMISMATCH);
  +     exit(i);
       }
   
       /*
  
  
  

Reply via email to