[BACK]Return to auth-options.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/auth-options.c between version 1.86 and 1.87

version 1.86, 2019/07/09 04:15:00 version 1.87, 2019/09/03 08:32:11
Line 36 
Line 36 
 #include "ssh2.h"  #include "ssh2.h"
 #include "auth-options.h"  #include "auth-options.h"
   
 /*  
  * Match flag 'opt' in *optsp, and if allow_negate is set then also match  
  * 'no-opt'. Returns -1 if option not matched, 1 if option matches or 0  
  * if negated option matches.  
  * If the option or negated option matches, then *optsp is updated to  
  * point to the first character after the option.  
  */  
 static int  
 opt_flag(const char *opt, int allow_negate, const char **optsp)  
 {  
         size_t opt_len = strlen(opt);  
         const char *opts = *optsp;  
         int negate = 0;  
   
         if (allow_negate && strncasecmp(opts, "no-", 3) == 0) {  
                 opts += 3;  
                 negate = 1;  
         }  
         if (strncasecmp(opts, opt, opt_len) == 0) {  
                 *optsp = opts + opt_len;  
                 return negate ? 0 : 1;  
         }  
         return -1;  
 }  
   
 static char *  
 opt_dequote(const char **sp, const char **errstrp)  
 {  
         const char *s = *sp;  
         char *ret;  
         size_t i;  
   
         *errstrp = NULL;  
         if (*s != '"') {  
                 *errstrp = "missing start quote";  
                 return NULL;  
         }  
         s++;  
         if ((ret = malloc(strlen((s)) + 1)) == NULL) {  
                 *errstrp = "memory allocation failed";  
                 return NULL;  
         }  
         for (i = 0; *s != '\0' && *s != '"';) {  
                 if (s[0] == '\\' && s[1] == '"')  
                         s++;  
                 ret[i++] = *s++;  
         }  
         if (*s == '\0') {  
                 *errstrp = "missing end quote";  
                 free(ret);  
                 return NULL;  
         }  
         ret[i] = '\0';  
         s++;  
         *sp = s;  
         return ret;  
 }  
   
 static int  
 opt_match(const char **opts, const char *term)  
 {  
         if (strncasecmp((*opts), term, strlen(term)) == 0 &&  
             (*opts)[strlen(term)] == '=') {  
                 *opts += strlen(term) + 1;  
                 return 1;  
         }  
         return 0;  
 }  
   
 static int  static int
 dup_strings(char ***dstp, size_t *ndstp, char **src, size_t nsrc)  dup_strings(char ***dstp, size_t *ndstp, char **src, size_t nsrc)
 {  {

Legend:
Removed from v.1.86  
changed lines
  Added in v.1.87