From aef60abe6a1772e18634984a94bd70f57d57ccdd Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 16 Feb 2017 10:19:59 +0100 Subject: [PATCH] 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 --- dirmngr/certcache.c | 7 +++---- dirmngr/http.c | 5 ++--- dirmngr/ldap.c | 24 +++++++----------------- dirmngr/server.c | 9 ++------- 4 files changed, 14 insertions(+), 31 deletions(-) diff --git a/dirmngr/certcache.c b/dirmngr/certcache.c index ad85d9912..10757c890 100644 --- a/dirmngr/certcache.c +++ b/dirmngr/certcache.c @@ -1004,15 +1004,15 @@ find_cert_bysn (ctrl_t ctrl, const char *issuer_dn, ksba_sexp_t serialno) log_error ("serial_hex() failed\n"); return NULL; } - buf = xtrymalloc (1 + strlen (hexsn) + 1 + strlen (issuer_dn) + 1); + buf = strconcat ("#", hexsn, "/", issuer_dn, NULL); if (!buf) { log_error ("can't allocate enough memory: %s\n", strerror (errno)); xfree (hexsn); return NULL; } - strcpy (stpcpy (stpcpy (stpcpy (buf, "#"), hexsn),"/"), issuer_dn); xfree (hexsn); + cert = get_cert_local (ctrl, buf); xfree (buf); if (cert) @@ -1169,13 +1169,12 @@ find_cert_bysubject (ctrl_t ctrl, const char *subject_dn, ksba_sexp_t keyid) search is done. */ char *buf; - buf = xtrymalloc (1 + strlen (subject_dn) + 1); + buf = strconcat ("/", subject_dn, NULL); if (!buf) { log_error ("can't allocate enough memory: %s\n", strerror (errno)); return NULL; } - strcpy (stpcpy (buf, "/"), subject_dn); cert = get_cert_local (ctrl, buf); xfree (buf); } diff --git a/dirmngr/http.c b/dirmngr/http.c index fe9c3c734..0889cb1ee 100644 --- a/dirmngr/http.c +++ b/dirmngr/http.c @@ -2150,11 +2150,10 @@ store_header (http_t hd, char *line) if (h) { /* We have already seen a line with that name. Thus we assume - it is a comma separated list and merge them. */ - p = xtrymalloc (strlen (h->value) + 1 + strlen (value)+ 1); + * it is a comma separated list and merge them. */ + p = strconcat (h->value, ",", value, NULL); if (!p) return gpg_err_code_from_syserror (); - strcpy (stpcpy (stpcpy (p, h->value), ","), value); xfree (h->value); h->value = p; return 0; diff --git a/dirmngr/ldap.c b/dirmngr/ldap.c index 20cbbd8fc..a037f5d69 100644 --- a/dirmngr/ldap.c +++ b/dirmngr/ldap.c @@ -445,26 +445,16 @@ make_url (char **url, const char *dn, const char *filter) xfree (u_dn); 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:///"), - u_dn), - "?"), - attrs), - "?sub?"), - u_filter); + *url = strconcat ("ldap:///", u_dn, "?", attrs, "?sub?", u_filter, NULL); + if (!*url) + err = gpg_error_from_syserror (); + else + err = 0; + xfree (u_dn); xfree (u_filter); - return 0; + return err; } diff --git a/dirmngr/server.c b/dirmngr/server.c index bca3a61e4..32ce5bb33 100644 --- a/dirmngr/server.c +++ b/dirmngr/server.c @@ -367,10 +367,7 @@ do_get_cert_local (ctrl_t ctrl, const char *name, const char *command) ksba_cert_t cert; if (name) - { - buf = xmalloc ( strlen (command) + 1 + strlen(name) + 1); - strcpy (stpcpy (stpcpy (buf, command), " "), name); - } + buf = xstrconcat (command, " ", name, NULL); else buf = xstrdup (command); @@ -475,15 +472,13 @@ get_cert_local_ski (ctrl_t ctrl, const char *name, ksba_sexp_t keyid) return NULL; } - buf = xtrymalloc (15 + strlen (hexkeyid) + 2 + strlen(name) + 1); + buf = strconcat ("SENDCERT_SKI ", hexkeyid, " /", name, NULL); if (!buf) { - log_error ("can't allocate enough memory: %s\n", strerror (errno)); xfree (hexkeyid); return NULL; } - strcpy (stpcpy (stpcpy (stpcpy (buf, "SENDCERT_SKI "), hexkeyid)," /"),name); xfree (hexkeyid); rc = assuan_inquire (ctrl->server_local->assuan_ctx, buf,