Currently, calling bytestring_from_string(NULL) will result in a SEGV
within strlen(). This patch makes this construct safe, returning
bytestring_NULL, which seems a less surprising result.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
*/
static inline struct bytestring bytestring_from_string(const char *s)
{
*/
static inline struct bytestring bytestring_from_string(const char *s)
{
+ if (!s)
+ return bytestring_NULL;
return bytestring(s, strlen(s));
}
return bytestring(s, strlen(s));
}
- struct bytestring bs, bs1, bs2, bs3, bs4;
+ struct bytestring bs, bs1, bs2, bs3, bs4, bs5;
/* This is how many tests you plan to run */
/* This is how many tests you plan to run */
bs = bytestring(str1, sizeof(str1) - 1);
ok1(bs.ptr == str1);
bs = bytestring(str1, sizeof(str1) - 1);
ok1(bs.ptr == str1);
bs4 = bytestring_from_string(TEST_STRING_2);
ok1(bs4.len == 3);
bs4 = bytestring_from_string(TEST_STRING_2);
ok1(bs4.len == 3);
+ bs5 = bytestring_from_string(NULL);
+ ok1(bs5.len == 0);
+ ok1(bs5.ptr == NULL);
+ ok1(bytestring_eq(bs5, bytestring_NULL));
+
/* This exits depending on whether all tests passed */
return exit_status();
}
/* This exits depending on whether all tests passed */
return exit_status();
}