Browse Source

A bit safer

Piotr Czajkowski 5 years ago
parent
commit
1a7ba18e95
2 changed files with 39 additions and 0 deletions
  1. 20 0
      pwned.c
  2. 19 0
      sha.c

+ 20 - 0
pwned.c

@@ -22,6 +22,11 @@ char *getSuffixUppercase(const char *hash) {
 	strncpy(hashSuffix, hash+HASH_PREFIX_SIZE, HASH_SUFFIX_SIZE);
 
 	char *suffixUpper = malloc(HASH_SUFFIX_SIZE + 1);
+	if (suffixUpper == NULL) {
+		puts("Couldn't allocate memory for suffix!");
+		return NULL;
+	}
+	
 	for (int i = 0; i < HASH_SUFFIX_SIZE; i++) {
 		int c = hashSuffix[i];
 		if (islower(c)) c = toupper(c);
@@ -64,11 +69,26 @@ int main(int argc, char **argv) {
 	}
 
 	char *hash = getHash(argv[1]);
+	if (hash == NULL) {
+		puts("Couldn't get hash!");
+		return 1;
+	}
+	
 	char *url = getURL(hash);
 	char *suffix = getSuffixUppercase(hash);
+	if (suffix == NULL) {
+		puts("Couldn't make suffix uppercase!");
+		return 1;
+	}
+	
 	free(hash);
 
 	char *data = getData(url);
+	if (data == NULL) {
+		puts("Couldn't get data from the API!");
+		return 1;
+	}
+	
 	free(url);
 
 	if (!findSuffix(suffix, data)) puts("Password not pwned!");

+ 19 - 0
sha.c

@@ -2,6 +2,11 @@
 
 static unsigned char *generateHash(const char *string, size_t length) {
 	unsigned char *hash = malloc(SHA_DIGEST_LENGTH);
+	if (hash == NULL) {
+		puts("Couldn't allocate memory for hash!");
+		return NULL;
+	}
+	
 	SHA1((unsigned char*)string, length, hash);
 
 	return hash;
@@ -9,6 +14,10 @@ static unsigned char *generateHash(const char *string, size_t length) {
 
 static char *hashToString(unsigned char *hash) {
 	char *string = malloc(2 * SHA_DIGEST_LENGTH + 1);
+	if (string == NULL) {
+		puts("Couldn't allocate memory for string!");
+		return NULL;
+	}
 
 	for(int i = 0; i < SHA_DIGEST_LENGTH; i++)
 		sprintf(string+(i*2), "%02x", hash[i]);
@@ -19,7 +28,17 @@ static char *hashToString(unsigned char *hash) {
 char *getHash(const char *string) {
 	size_t length = strlen(string);
 	unsigned char *hash = generateHash(string, length);
+	if (hash == NULL) {
+		puts("Couldn't generate hash!");
+		return NULL;
+	}
+	
 	char *hashString = hashToString(hash);
+	if (hashString == NULL) {
+		puts("Couldn't convert hash to string!");
+		return NULL;
+	}
+	
 	free(hash);
 
 	return hashString;