diff options
author | Stef Walter <stefw@gnome.org> | 2013-03-19 14:50:32 +0100 |
---|---|---|
committer | Stef Walter <stefw@gnome.org> | 2013-03-19 16:47:05 +0100 |
commit | 7c27e9fbbe86b3268065f248eab2d6964983a715 (patch) | |
tree | 72127883de5d9c97c7432a7fc651d9259caf38fe /trust | |
parent | 535475c238c427cb685b4282997f7bce0876bfdf (diff) |
trust: Don't use POSIX or GNU basename()
Both are nasty. Do our own, and test it a bit
https://bugs.freedesktop.org/show_bug.cgi?id=62479
Diffstat (limited to 'trust')
-rw-r--r-- | trust/module.c | 5 | ||||
-rw-r--r-- | trust/parser.c | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/trust/module.c b/trust/module.c index 5759e91..ed93479 100644 --- a/trust/module.c +++ b/trust/module.c @@ -537,7 +537,7 @@ sys_C_GetTokenInfo (CK_SLOT_ID id, { CK_RV rv = CKR_OK; p11_token *token; - const char *path; + char *path; size_t length; return_val_if_fail (info != NULL, CKR_ARGUMENTS_BAD); @@ -569,12 +569,13 @@ sys_C_GetTokenInfo (CK_SLOT_ID id, info->ulFreePrivateMemory = CK_UNAVAILABLE_INFORMATION; /* If too long, copy the last 32 characters into buffer */ - path = basename (p11_token_get_path (token)); + path = p11_basename (p11_token_get_path (token)); length = strlen (path); if (length > sizeof (info->label)) length = sizeof (info->label); memset (info->label, ' ', sizeof (info->label)); memcpy (info->label, path, length); + free (path); } p11_unlock (); diff --git a/trust/parser.c b/trust/parser.c index 8f37637..42d74fc 100644 --- a/trust/parser.c +++ b/trust/parser.c @@ -649,7 +649,7 @@ p11_parse_memory (p11_parser *parser, return_val_if_fail (parser != NULL, P11_PARSE_FAILURE); - base = basename (filename); + base = p11_basename (filename); parser->basename = base; parser->flags = flags; @@ -663,6 +663,8 @@ p11_parse_memory (p11_parser *parser, } p11_asn1_cache_flush (parser->asn1_cache); + + free (base); parser->basename = NULL; parser->flags = 0; |