diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/passphrase.c | 23 | 
1 files changed, 21 insertions, 2 deletions
| diff --git a/src/passphrase.c b/src/passphrase.c index 94922e4..ae7ad36 100644 --- a/src/passphrase.c +++ b/src/passphrase.c @@ -78,8 +78,27 @@ char* passphrase_read(void)  #endif  	  *(rc + len++) = c;  	  if (len == size) -	    if ((rc = realloc(rc, (size <<= 1L) * sizeof(char))) == NULL) -	      return NULL; +	    { +#ifndef PASSPHRASE_REALLOC +	      char* rc_2 = malloc((size <<= 1L) * sizeof(char)); +	      int i; +	      if (rc_2) +		{ +		  for (i = 0; i < len; i++) +		    *(rc_2 + i) = *(rc + i); +		} +	      for (i = 0; i < len; i++) +		*(rc + i) = 0; +	      free(rc); +	      if (rc_2 == NULL) +		return rc_2; +	      rc = rc_2; +#else +	      rc = realloc(rc, (size <<= 1L) * sizeof(char)); +	      if (rc == NULL) +		return NULL; +#endif +	    }  	}      } | 
