dirmngr: Replace stpcpy chains by strconcat.

* dirmngr/certcache.c (find_cert_bysn): Use strconcat.
(find_cert_bysubject): Ditto.
* dirmngr/http.c (store_header): Ditto.
* dirmngr/ldap.c (make_url): Ditto.
* dirmngr/server.c (get_cert_local_ski): Ditto.
(do_get_cert_local): Use xstrconcat.
--

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2017-02-16 10:19:59 +01:00
parent 7a666ccb44
commit aef60abe6a
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
4 changed files with 14 additions and 31 deletions

View File

@ -1004,15 +1004,15 @@ find_cert_bysn (ctrl_t ctrl, const char *issuer_dn, ksba_sexp_t serialno)
log_error ("serial_hex() failed\n"); log_error ("serial_hex() failed\n");
return NULL; return NULL;
} }
buf = xtrymalloc (1 + strlen (hexsn) + 1 + strlen (issuer_dn) + 1); buf = strconcat ("#", hexsn, "/", issuer_dn, NULL);
if (!buf) if (!buf)
{ {
log_error ("can't allocate enough memory: %s\n", strerror (errno)); log_error ("can't allocate enough memory: %s\n", strerror (errno));
xfree (hexsn); xfree (hexsn);
return NULL; return NULL;
} }
strcpy (stpcpy (stpcpy (stpcpy (buf, "#"), hexsn),"/"), issuer_dn);
xfree (hexsn); xfree (hexsn);
cert = get_cert_local (ctrl, buf); cert = get_cert_local (ctrl, buf);
xfree (buf); xfree (buf);
if (cert) if (cert)
@ -1169,13 +1169,12 @@ find_cert_bysubject (ctrl_t ctrl, const char *subject_dn, ksba_sexp_t keyid)
search is done. */ search is done. */
char *buf; char *buf;
buf = xtrymalloc (1 + strlen (subject_dn) + 1); buf = strconcat ("/", subject_dn, NULL);
if (!buf) if (!buf)
{ {
log_error ("can't allocate enough memory: %s\n", strerror (errno)); log_error ("can't allocate enough memory: %s\n", strerror (errno));
return NULL; return NULL;
} }
strcpy (stpcpy (buf, "/"), subject_dn);
cert = get_cert_local (ctrl, buf); cert = get_cert_local (ctrl, buf);
xfree (buf); xfree (buf);
} }

View File

@ -2150,11 +2150,10 @@ store_header (http_t hd, char *line)
if (h) if (h)
{ {
/* We have already seen a line with that name. Thus we assume /* We have already seen a line with that name. Thus we assume
it is a comma separated list and merge them. */ * it is a comma separated list and merge them. */
p = xtrymalloc (strlen (h->value) + 1 + strlen (value)+ 1); p = strconcat (h->value, ",", value, NULL);
if (!p) if (!p)
return gpg_err_code_from_syserror (); return gpg_err_code_from_syserror ();
strcpy (stpcpy (stpcpy (p, h->value), ","), value);
xfree (h->value); xfree (h->value);
h->value = p; h->value = p;
return 0; return 0;

View File

@ -445,26 +445,16 @@ make_url (char **url, const char *dn, const char *filter)
xfree (u_dn); xfree (u_dn);
return err; return err;
} }
*url = malloc ( 8 + strlen (u_dn)
+ 1 + strlen (attrs)
+ 5 + strlen (u_filter) + 1 );
if (!*url)
{
err = gpg_error_from_errno (errno);
xfree (u_dn);
xfree (u_filter);
return err;
}
stpcpy (stpcpy (stpcpy (stpcpy (stpcpy (stpcpy (*url, "ldap:///"), *url = strconcat ("ldap:///", u_dn, "?", attrs, "?sub?", u_filter, NULL);
u_dn), if (!*url)
"?"), err = gpg_error_from_syserror ();
attrs), else
"?sub?"), err = 0;
u_filter);
xfree (u_dn); xfree (u_dn);
xfree (u_filter); xfree (u_filter);
return 0; return err;
} }

View File

@ -367,10 +367,7 @@ do_get_cert_local (ctrl_t ctrl, const char *name, const char *command)
ksba_cert_t cert; ksba_cert_t cert;
if (name) if (name)
{ buf = xstrconcat (command, " ", name, NULL);
buf = xmalloc ( strlen (command) + 1 + strlen(name) + 1);
strcpy (stpcpy (stpcpy (buf, command), " "), name);
}
else else
buf = xstrdup (command); buf = xstrdup (command);
@ -475,15 +472,13 @@ get_cert_local_ski (ctrl_t ctrl, const char *name, ksba_sexp_t keyid)
return NULL; return NULL;
} }
buf = xtrymalloc (15 + strlen (hexkeyid) + 2 + strlen(name) + 1); buf = strconcat ("SENDCERT_SKI ", hexkeyid, " /", name, NULL);
if (!buf) if (!buf)
{ {
log_error ("can't allocate enough memory: %s\n", strerror (errno)); log_error ("can't allocate enough memory: %s\n", strerror (errno));
xfree (hexkeyid); xfree (hexkeyid);
return NULL; return NULL;
} }
strcpy (stpcpy (stpcpy (stpcpy (buf, "SENDCERT_SKI "), hexkeyid)," /"),name);
xfree (hexkeyid); xfree (hexkeyid);
rc = assuan_inquire (ctrl->server_local->assuan_ctx, buf, rc = assuan_inquire (ctrl->server_local->assuan_ctx, buf,