1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- $OpenBSD: patch-lib_relocatable_c,v 1.3 2011/09/02 15:44:46 naddy Exp $
- --- lib/relocatable.c.orig Thu Sep 1 18:08:15 2011
- +++ lib/relocatable.c Thu Sep 1 18:21:29 2011
- @@ -446,16 +446,20 @@ relocate (const char *pathname)
- if (orig_prefix != NULL && curr_prefix != NULL
- && strncmp (pathname, orig_prefix, orig_prefix_len) == 0)
- {
- + char *result;
- + size_t len;
- +
- if (pathname[orig_prefix_len] == '\0')
- {
- /* pathname equals orig_prefix. */
- - char *result = (char *) xmalloc (strlen (curr_prefix) + 1);
- + len = strlen (curr_prefix) + 1;
- + result = (char *) xmalloc (len);
-
- #ifdef NO_XMALLOC
- if (result != NULL)
- #endif
- {
- - strcpy (result, curr_prefix);
- + strlcpy (result, curr_prefix, len);
- return result;
- }
- }
- @@ -463,15 +467,16 @@ relocate (const char *pathname)
- {
- /* pathname starts with orig_prefix. */
- const char *pathname_tail = &pathname[orig_prefix_len];
- - char *result =
- - (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1);
- + len = curr_prefix_len + strlen (pathname_tail) + 1;
- + result = (char *) xmalloc (len);
-
- #ifdef NO_XMALLOC
- if (result != NULL)
- #endif
- {
- memcpy (result, curr_prefix, curr_prefix_len);
- - strcpy (result + curr_prefix_len, pathname_tail);
- + result[curr_prefix_len] = '\0';
- + strlcat (result, pathname_tail, len);
- return result;
- }
- }
|