Text   |  XML   |  ReML   |   Visible Warnings:

Null Pointer Dereference  at password-scheme.c:141

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

main

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/util/dovecotpw.c)expand/collapse
Show more  
 36  int main(int argc, char *argv[])
 37  {
 38          const char *hash = NULL;
 39          const char *user = NULL;
 40          char *scheme = NULL;
 41          char *plaintext = NULL;
 42          int ch, lflag = 0, Vflag = 0;
 43   
 44          lib_init();
 45          random_init();
 46          password_schemes_init();
 47           
 48          while ((ch = getopt(argc, argv, "lp:s:u:V")) != -1) {
 49                  switch (ch) {
 50                  case 'l':
 51                          lflag = 1;
 52                          break;
 53                  case 'p':
 54                          plaintext = i_strdup(optarg);
 55                          safe_memset(optarg, 0, strlen(optarg));
 56                          break;
 57                  case 's':
 58                          scheme = i_strdup(optarg);
 59                          break;
 60                  case 'u':
 61                          user = i_strdup(optarg);
 62                          break;
 63                  case 'V':
 64                          Vflag = 1;
 65                          break;
 66                  case '?':
 67                  default:
 68                          usage(basename(*argv));
 69                  }
 70          }
 71   
 72          if (lflag) {
 73                  const struct password_scheme *const *schemes;
 74                  unsigned int i, count;
 75   
 76                  schemes = array_get(&password_schemes, &count);
 77                  for (i = 0; i < count; i++)
 78                          printf("%s ", schemes[i]->name);
 79                  printf("\n");
 80                  exit(0);
 81          }
 82   
 83          if (argc != optind)
 84                  usage(basename(*argv));
 85   
 86          if (scheme == NULL)
 87                  scheme = i_strdup(DEFAULT_SCHEME);
 88          else {
 89                  char *c;
 90                  for (c = scheme; *c != '\0'; c++)
 91                          *c = i_toupper(*c);
 92          }
 93   
 94   
 95          while (plaintext == NULL) {
 96                  char *check;
 97                  static int lives = 3;
 98   
 99                  plaintext = i_strdup(getpass("Enter new password: "));
 100                  check = i_strdup(getpass("Retype new password: "));
 101                  if (strcmp(plaintext, check) != 0) {
 102                          fprintf(stderr, "Passwords don't match!\n");
 103                          if (--lives == 0)
 104                                  exit(1);
 105                          safe_memset(plaintext, 0, strlen(plaintext));
 106                          safe_memset(check, 0, strlen(check));
 107                          i_free(plaintext);
 108                          i_free(check);
 109                          plaintext = NULL;
 110                  }
 111          }
 112   
 113[+]         if (!password_generate_encoded(plaintext, user, scheme, &hash)) {
 114                  fprintf(stderr, "Unknown scheme: %s\n", scheme);
 115                  exit(1);
 116          }
 117          if (Vflag == 1) {
 118                  const unsigned char *raw_password;
 119                  size_t size;
 120   
 121[+]                 if (password_decode(hash, scheme, &raw_password, &size) <= 0) {
expand/collapse

password_decode

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/auth/password-scheme.c)expand/collapse
Show more  
 129  int password_decode(const char *password, const char *scheme,
 130                      const unsigned char **raw_password_r, size_t *size_r)
 131  {
 132          const struct password_scheme *s;
 133          enum password_encoding encoding;
 134          buffer_t *buf;
 135          unsigned int len;
 136   
 137          s = password_scheme_lookup(scheme, &encoding);
 138          if (s == NULL)
 139                  return 0;
 140   
 141          len = strlen(password);
Show more  
Show more  




Change Warning 11523.24664 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: