Use BUF_strlcpy() instead of strcpy().
[openssl.git] / crypto / bio / b_dump.c
index 0f61768360140e8ceb1f691189e5ddd206a7ef97..76fee2db4f1f0480019d3569bab196416ea1ce7c 100644 (file)
@@ -104,38 +104,41 @@ int BIO_dump_indent(BIO *bio, const char *s, int len, int indent)
        for(i=0;i<rows;i++)
                {
                buf[0]='\0';    /* start with empty string */
-               strcpy(buf,str);
-               sprintf(tmp,"%04x - ",i*dump_width);
-               strcat(buf,tmp);
+               BUF_strlcpy(buf,str,sizeof buf);
+               BIO_snprintf(tmp,sizeof tmp,"%04x - ",i*dump_width);
+               BUF_strlcat(buf,tmp,sizeof buf);
                for(j=0;j<dump_width;j++)
                        {
                        if (((i*dump_width)+j)>=len)
                                {
-                               strcat(buf,"   ");
+                               BUF_strlcat(buf,"   ",sizeof buf);
                                }
                        else
                                {
                                ch=((unsigned char)*(s+i*dump_width+j)) & 0xff;
-                               sprintf(tmp,"%02x%c",ch,j==7?'-':' ');
-                               strcat(buf,tmp);
+                               BIO_snprintf(tmp,sizeof tmp,"%02x%c",ch,
+                                        j==7?'-':' ');
+                               BUF_strlcat(buf,tmp,sizeof buf);
                                }
                        }
-               strcat(buf,"  ");
+               BUF_strlcat(buf,"  ",sizeof buf);
                for(j=0;j<dump_width;j++)
                        {
                        if (((i*dump_width)+j)>=len)
                                break;
                        ch=((unsigned char)*(s+i*dump_width+j)) & 0xff;
 #ifndef CHARSET_EBCDIC
-                       sprintf(tmp,"%c",((ch>=' ')&&(ch<='~'))?ch:'.');
+                       BIO_snprintf(tmp,sizeof tmp,"%c",
+                                ((ch>=' ')&&(ch<='~'))?ch:'.');
 #else
-                       sprintf(tmp,"%c",((ch>=os_toascii[' '])&&(ch<=os_toascii['~']))
-                               ? os_toebcdic[ch]
-                               : '.');
+                       BIO_snprintf(tmp,sizeof tmp,"%c",
+                                ((ch>=os_toascii[' '])&&(ch<=os_toascii['~']))
+                                ? os_toebcdic[ch]
+                                : '.');
 #endif
-                       strcat(buf,tmp);
+                       BUF_strlcat(buf,tmp,sizeof buf);
                        }
-               strcat(buf,"\n");
+               BUF_strlcat(buf,"\n",sizeof buf);
                /* if this is the last call then update the ddt_dump thing so that
                 * we will move the selection point in the debug window 
                 */
@@ -144,7 +147,8 @@ int BIO_dump_indent(BIO *bio, const char *s, int len, int indent)
 #ifdef TRUNCATE
        if (trc > 0)
                {
-               sprintf(buf,"%s%04x - <SPACES/NULS>\n",str,len+trc);
+               BIO_snprintf(buf,sizeof buf,"%s%04x - <SPACES/NULS>\n",str,
+                            len+trc);
                ret+=BIO_write(bio,(char *)buf,strlen(buf));
                }
 #endif