Message ID | 87ftpvr0nm.fsf@oldenburg2.str.redhat.com |
---|---|
State | New |
Headers | show |
Series | support: Report NULL blobs explicitly in TEST_COMPARE | expand |
* Florian Weimer: > Provide an explicit diagnostic if the length is positive, and > do not just crash with a null pointer dereference. Null pointers > are only valid if the length is zero, so this can only happen with > a faulty test. > > 2019-05-03 Florian Weimer <fweimer@redhat.com> > > * support/support_test_compare_blob.c (report_blob): Report > incorrect NULL blobs. > > diff --git a/support/support_test_compare_blob.c b/support/support_test_compare_blob.c > index 5bcb03418c..00491b0df1 100644 > --- a/support/support_test_compare_blob.c > +++ b/support/support_test_compare_blob.c > @@ -33,7 +33,9 @@ static void > report_blob (const char *what, const unsigned char *blob, > unsigned long int length, const char *expr) > { > - if (length > 0) > + if (blob == NULL) > + printf (" %s (evaluated from %s): NULL\n", what, expr); > + else if (length > 0) > { > printf (" %s (evaluated from %s):\n", what, expr); > char *quoted = support_quote_blob (blob, length); Hmph, this patch is better because it does not change test failure output with for NULL with zero length: diff --git a/support/support_test_compare_blob.c b/support/support_test_compare_blob.c index 5bcb03418c..37f012257d 100644 --- a/support/support_test_compare_blob.c +++ b/support/support_test_compare_blob.c @@ -33,7 +33,9 @@ static void report_blob (const char *what, const unsigned char *blob, unsigned long int length, const char *expr) { - if (length > 0) + if (blob == NULL && length > 0) + printf (" %s (evaluated from %s): NULL\n", what, expr); + else if (length > 0) { printf (" %s (evaluated from %s):\n", what, expr); char *quoted = support_quote_blob (blob, length);
diff --git a/support/support_test_compare_blob.c b/support/support_test_compare_blob.c index 5bcb03418c..00491b0df1 100644 --- a/support/support_test_compare_blob.c +++ b/support/support_test_compare_blob.c @@ -33,7 +33,9 @@ static void report_blob (const char *what, const unsigned char *blob, unsigned long int length, const char *expr) { - if (length > 0) + if (blob == NULL) + printf (" %s (evaluated from %s): NULL\n", what, expr); + else if (length > 0) { printf (" %s (evaluated from %s):\n", what, expr); char *quoted = support_quote_blob (blob, length);