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

Diff for /src/usr.bin/ssh/ssh-keygen.c between version 1.191 and 1.192

version 1.191, 2010/06/22 04:32:06 version 1.192, 2010/06/23 02:59:02
Line 1402 
Line 1402 
 }  }
   
 static void  static void
   show_options(const Buffer *optbuf, int v00, int in_critical)
   {
           u_char *name, *data;
           u_int dlen;
           Buffer options, option;
   
           buffer_init(&options);
           buffer_append(&options, buffer_ptr(optbuf), buffer_len(optbuf));
   
           buffer_init(&option);
           while (buffer_len(&options) != 0) {
                   name = buffer_get_string(&options, NULL);
                   data = buffer_get_string_ptr(&options, &dlen);
                   buffer_append(&option, data, dlen);
                   printf("                %s", name);
                   if ((v00 || !in_critical) &&
                       (strcmp(name, "permit-X11-forwarding") == 0 ||
                       strcmp(name, "permit-agent-forwarding") == 0 ||
                       strcmp(name, "permit-port-forwarding") == 0 ||
                       strcmp(name, "permit-pty") == 0 ||
                       strcmp(name, "permit-user-rc") == 0))
                           printf("\n");
                   else if ((v00 || in_critical) &&
                       (strcmp(name, "force-command") == 0 ||
                       strcmp(name, "source-address") == 0)) {
                           data = buffer_get_string(&option, NULL);
                           printf(" %s\n", data);
                           xfree(data);
                   } else {
                           printf(" UNKNOWN OPTION (len %u)\n",
                               buffer_len(&option));
                           buffer_clear(&option);
                   }
                   xfree(name);
                   if (buffer_len(&option) != 0)
                           fatal("Option corrupt: extra data at end");
           }
           buffer_free(&option);
           buffer_free(&options);
   }
   
   static void
 do_show_cert(struct passwd *pw)  do_show_cert(struct passwd *pw)
 {  {
         Key *key;          Key *key;
         struct stat st;          struct stat st;
         char *key_fp, *ca_fp;          char *key_fp, *ca_fp;
         Buffer options, option;          u_int i, v00;
         u_char *name, *data;  
         u_int i, dlen, v00;  
   
         if (!have_identity)          if (!have_identity)
                 ask_filename(pw, "Enter file in which the key is");                  ask_filename(pw, "Enter file in which the key is");
Line 1450 
Line 1490 
                 printf("(none)\n");                  printf("(none)\n");
         else {          else {
                 printf("\n");                  printf("\n");
                 buffer_init(&options);                  show_options(&key->cert->critical, v00, 1);
                 buffer_append(&options,  
                     buffer_ptr(&key->cert->critical),  
                     buffer_len(&key->cert->critical));  
                 buffer_init(&option);  
                 while (buffer_len(&options) != 0) {  
                         name = buffer_get_string(&options, NULL);  
                         data = buffer_get_string_ptr(&options, &dlen);  
                         buffer_append(&option, data, dlen);  
                         printf("                %s", name);  
                         if (strcmp(name, "permit-X11-forwarding") == 0 ||  
                             strcmp(name, "permit-agent-forwarding") == 0 ||  
                             strcmp(name, "permit-port-forwarding") == 0 ||  
                             strcmp(name, "permit-pty") == 0 ||  
                             strcmp(name, "permit-user-rc") == 0)  
                                 printf("\n");  
                         else if (strcmp(name, "force-command") == 0 ||  
                             strcmp(name, "source-address") == 0) {  
                                 data = buffer_get_string(&option, NULL);  
                                 printf(" %s\n", data);  
                                 xfree(data);  
                         } else {  
                                 printf(" UNKNOWN OPTION (len %u)\n",  
                                     buffer_len(&option));  
                                 buffer_clear(&option);  
                         }  
                         xfree(name);  
                         if (buffer_len(&option) != 0)  
                                 fatal("Option corrupt: extra data at end");  
                 }  
                 buffer_free(&option);  
                 buffer_free(&options);  
         }          }
         if (!v00) {          if (!v00) {
                 printf("        Extensions: ");                  printf("        Extensions: ");
Line 1489 
Line 1498 
                         printf("(none)\n");                          printf("(none)\n");
                 else {                  else {
                         printf("\n");                          printf("\n");
                         buffer_init(&options);                          show_options(&key->cert->extensions, v00, 0);
                         buffer_append(&options,  
                             buffer_ptr(&key->cert->extensions),  
                             buffer_len(&key->cert->extensions));  
                         buffer_init(&option);  
                         while (buffer_len(&options) != 0) {  
                                 name = buffer_get_string(&options, NULL);  
                                 (void)buffer_get_string_ptr(&options, &dlen);  
                                 printf("                %s UNKNOWN OPTION "  
                                     "(len %u)\n", name, dlen);  
                                 xfree(name);  
                         }  
                         buffer_free(&option);  
                         buffer_free(&options);  
                 }                  }
         }          }
         exit(0);          exit(0);

Legend:
Removed from v.1.191  
changed lines
  Added in v.1.192