Skip to content

Commit

Permalink
Clear errors and warnings for SHA-1 and SHA-256
Browse files Browse the repository at this point in the history
This commit accomplishes two things. First, it clears all the pointer-sign warnings in 13-unit-tests-base.c. Second, it fixes const-ness in ldns_sha1, ldns_sha256, ldns_sha384 and ldns_sha512.
  • Loading branch information
noloader committed Mar 5, 2020
1 parent 51c9a6e commit bd1fca9
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 37 deletions.
9 changes: 8 additions & 1 deletion ldns/sha1.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
#ifndef LDNS_SHA1_H
#define LDNS_SHA1_H

#include <stdint.h> /* uint32_t and friends */
#include <stddef.h> /* size_t and NULL */

#if LDNS_BUILD_CONFIG_HAVE_INTTYPES_H
# include <inttypes.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif
Expand Down Expand Up @@ -29,7 +36,7 @@ void ldns_sha1_final(unsigned char digest[LDNS_SHA1_DIGEST_LENGTH], ldns_sha1_ct
* available
* \return the SHA1 digest of the given data
*/
unsigned char *ldns_sha1(unsigned char *data, unsigned int data_len, unsigned char *digest);
unsigned char *ldns_sha1(const unsigned char *data, unsigned int data_len, unsigned char *digest);

#ifdef __cplusplus
}
Expand Down
27 changes: 10 additions & 17 deletions ldns/sha2.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,23 +46,16 @@
#ifndef __LDNS_SHA2_H__
#define __LDNS_SHA2_H__

#ifdef __cplusplus
extern "C" {
#endif


/*
* Import u_intXX_t size_t type definitions from system headers. You
* may need to change this, or define these things yourself in this
* file.
*/
#include <sys/types.h>
#include <stdint.h> /* uint32_t and friends */
#include <stddef.h> /* size_t and NULL */

#if LDNS_BUILD_CONFIG_HAVE_INTTYPES_H
# include <inttypes.h>
#endif

#include <inttypes.h>

#endif /* LDNS_BUILD_CONFIG_HAVE_INTTYPES_H */
#ifdef __cplusplus
extern "C" {
#endif


/*** SHA-256/384/512 Various Length Definitions ***********************/
Expand Down Expand Up @@ -116,7 +109,7 @@ void ldns_sha512_final(uint8_t[LDNS_SHA512_DIGEST_LENGTH], ldns_sha512_CTX*);
* available
* \return the SHA1 digest of the given data
*/
unsigned char *ldns_sha256(unsigned char *data, unsigned int data_len, unsigned char *digest);
unsigned char *ldns_sha256(const unsigned char *data, unsigned int data_len, unsigned char *digest);

/**
* Convenience function to digest a fixed block of data at once.
Expand All @@ -128,7 +121,7 @@ unsigned char *ldns_sha256(unsigned char *data, unsigned int data_len, unsigned
* available
* \return the SHA1 digest of the given data
*/
unsigned char *ldns_sha384(unsigned char *data, unsigned int data_len, unsigned char *digest);
unsigned char *ldns_sha384(const unsigned char *data, unsigned int data_len, unsigned char *digest);

/**
* Convenience function to digest a fixed block of data at once.
Expand All @@ -140,7 +133,7 @@ unsigned char *ldns_sha384(unsigned char *data, unsigned int data_len, unsigned
* available
* \return the SHA1 digest of the given data
*/
unsigned char *ldns_sha512(unsigned char *data, unsigned int data_len, unsigned char *digest);
unsigned char *ldns_sha512(const unsigned char *data, unsigned int data_len, unsigned char *digest);

#ifdef __cplusplus
}
Expand Down
2 changes: 1 addition & 1 deletion sha1.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ ldns_sha1_final(unsigned char digest[LDNS_SHA1_DIGEST_LENGTH], ldns_sha1_ctx *co
}

unsigned char *
ldns_sha1(unsigned char *data, unsigned int data_len, unsigned char *digest)
ldns_sha1(const unsigned char *data, unsigned int data_len, unsigned char *digest)
{
ldns_sha1_ctx ctx;
ldns_sha1_init(&ctx);
Expand Down
6 changes: 3 additions & 3 deletions sha2.c
Original file line number Diff line number Diff line change
Expand Up @@ -621,7 +621,7 @@ void ldns_sha256_final(sha2_byte digest[], ldns_sha256_CTX* context) {
}

unsigned char *
ldns_sha256(unsigned char *data, unsigned int data_len, unsigned char *digest)
ldns_sha256(const unsigned char *data, unsigned int data_len, unsigned char *digest)
{
ldns_sha256_CTX ctx;
ldns_sha256_init(&ctx);
Expand Down Expand Up @@ -935,7 +935,7 @@ void ldns_sha512_final(sha2_byte digest[], ldns_sha512_CTX* context) {
}

unsigned char *
ldns_sha512(unsigned char *data, unsigned int data_len, unsigned char *digest)
ldns_sha512(const unsigned char *data, unsigned int data_len, unsigned char *digest)
{
ldns_sha512_CTX ctx;
ldns_sha512_init(&ctx);
Expand Down Expand Up @@ -988,7 +988,7 @@ void ldns_sha384_final(sha2_byte digest[], ldns_sha384_CTX* context) {
}

unsigned char *
ldns_sha384(unsigned char *data, unsigned int data_len, unsigned char *digest)
ldns_sha384(const unsigned char *data, unsigned int data_len, unsigned char *digest)
{
ldns_sha384_CTX ctx;
ldns_sha384_init(&ctx);
Expand Down
31 changes: 16 additions & 15 deletions test/13-unit-tests-base.tpkg/13-unit-tests-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@

#include <ldns/ldns.h>

/* Avoid signedness warnings */
#define CH_PTR(ptr) ((char*)(ptr))
#define UCH_PTR(ptr) ((unsigned char*)(ptr))

void print_data_ar(const uint8_t *data, const size_t len) {
size_t i;

Expand Down Expand Up @@ -291,20 +295,19 @@ test_base32_decode_extended_hex(const char *str, const uint8_t *expect_data, siz


int
test_sha1(char *data, const char *expect_result_str)
test_sha1(const void *data, const void *expect_result_str)
{
int result;
char *digest, *d;
unsigned char *digest, *d;
unsigned int digest_len;
uint8_t *expect_result;
size_t data_len;

data_len = strlen(data);

expect_result = malloc(strlen(expect_result_str) / 2);
expect_result = malloc(strlen(CH_PTR(expect_result_str)) / 2);
(void) ldns_hexstring_to_data(expect_result, expect_result_str);


digest_len = LDNS_SHA1_DIGEST_LENGTH;
digest = malloc(digest_len);

Expand All @@ -316,12 +319,12 @@ test_sha1(char *data, const char *expect_result_str)
printf("\n");
result = 1;
} else {
if (strncmp(expect_result, digest, digest_len) != 0) {
if (strncmp(CH_PTR(expect_result), CH_PTR(digest), digest_len) != 0) {
printf("Bad sha1 digest: got: ");
print_data_ar(digest, digest_len);
printf("Expected: ");
printf("%s\n", expect_result);
printf("Data:\t%s\n", data);
printf("%s\n", CH_PTR(expect_result));
printf("Data:\t%s\n", CH_PTR(data));

result = 2;
} else {
Expand All @@ -334,17 +337,17 @@ test_sha1(char *data, const char *expect_result_str)
}

int
test_sha256(char *data, const char *expect_result_str)
test_sha256(const void *data, const void *expect_result_str)
{
int result;
char *digest, *d;
unsigned char *digest, *d;
unsigned int digest_len;
uint8_t *expect_result;
size_t data_len;

data_len = strlen(data);

expect_result = malloc(strlen(expect_result_str) / 2);
expect_result = malloc(strlen(CH_PTR(expect_result_str)) / 2);
(void) ldns_hexstring_to_data(expect_result, expect_result_str);

digest_len = LDNS_SHA256_DIGEST_LENGTH;
Expand All @@ -358,12 +361,12 @@ test_sha256(char *data, const char *expect_result_str)
printf("\n");
result = 1;
} else {
if (strncmp(expect_result, digest, digest_len) != 0) {
if (strncmp(CH_PTR(expect_result), CH_PTR(digest), digest_len) != 0) {
printf("Bad sha256 digest: got: ");
print_data_ar(digest, digest_len);
printf("Expected: ");
printf("%s\n", expect_result);
printf("Data:\t%s\n", data);
printf("%s\n", CH_PTR(expect_result));
printf("Data:\t%s\n", CH_PTR(data));

result = 2;
} else {
Expand All @@ -380,8 +383,6 @@ main(void)
{
uint8_t *data;
size_t data_len;
char *text;
size_t text_len;

int result = EXIT_SUCCESS;

Expand Down

0 comments on commit bd1fca9

Please sign in to comment.