Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix signed integer oveflow which is UB and silencing other warnings #2

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Manu-sh
Copy link

@Manu-sh Manu-sh commented Oct 25, 2021

As you should know signed integer overflow is UB, apart from that I strongly suggest you enable at least the compiler warnings (-Wall and -Wextra flags), i haven't looked for any other bugs.

@Manu-sh Manu-sh changed the title fix signed integer oveflow which is UB and shutup other warnings fix signed integer oveflow which is UB and silencing other warnings Oct 25, 2021
@@ -4,3 +4,4 @@
test
*.d
base45
.idea/
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nothing just prevent to push my ide folder

@@ -47,7 +47,7 @@ int base45_encode(char * dst, size_t *_max_dst_len, const unsigned char * src, s
size_t out_len = 0, max_dst_len;
max_dst_len = _max_dst_len ? *_max_dst_len : src_len * 4;

for(int i = 0; i < src_len; i+=2) {
for(unsigned i = 0; i < src_len; i+=2) {
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

silencing warnings about different sign

@@ -101,19 +101,19 @@ int base45_decode(unsigned char * dst, size_t * _max_dst_len, const char * src,
if (src_len == 0)
src_len = strlen(src);

for(int i = 0; i < src_len; i+=3) {
for(unsigned i = 0; i < src_len; i+=3) {
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

silencing warnings about different sign


if ((255 == (a = _C2I[src[i]])) || (255 == (b = _C2I[src[i+1]])))
if ((255 == (a = _C2I[(unsigned char)src[i]])) || (255 == (b = _C2I[(unsigned char)src[i+1]])))
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unsigned integer overflow is well defined, so this cast silence other useless warnings

@@ -21,7 +21,7 @@ void check(char * in, char * out) {
assert(0 == bcmp(dec,in,dlen));

printf("base64(\"%s\") -> \"%s\"\n", (char*)dec, enc);
};
}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C standards doesn't allow ; after function definitions

@@ -30,4 +30,4 @@ int main(int argc, char **argv) {
check("COVID-19","-M8*+A%R81A6");
check("2021 Digital Green Certificates for travel",
"NF6OF6P34SED-EDAECS34ZKE1$CO345$CBWER.CGPC7WE.OEX.CBJEKWEKEC: C");
};
}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C standards doesn't allow ; after function definitions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant