summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2007-07-12 23:33:25 +0000
committerKen Raeburn <raeburn@mit.edu>2007-07-12 23:33:25 +0000
commit52571d9201c7bef4dc5ebdf14a41db1f7baddc8e (patch)
tree9f108e05e8881ea19954b4959fdca96d47daa615 /src/lib/gssapi
parent57913ccc175061dd41e98914d50eda56dd9685c0 (diff)
downloadkrb5-52571d9201c7bef4dc5ebdf14a41db1f7baddc8e.tar.gz
krb5-52571d9201c7bef4dc5ebdf14a41db1f7baddc8e.tar.xz
krb5-52571d9201c7bef4dc5ebdf14a41db1f7baddc8e.zip
Avoid use of unchecked sprintf in libraries. Use asprintf if the
output buffer is allocated according to the size of data to be written, or snprintf otherwise. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19703 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi')
-rw-r--r--src/lib/gssapi/generic/disp_major_status.c7
-rw-r--r--src/lib/gssapi/mechglue/oid_ops.c12
2 files changed, 8 insertions, 11 deletions
diff --git a/src/lib/gssapi/generic/disp_major_status.c b/src/lib/gssapi/generic/disp_major_status.c
index 218370d14..0648192a1 100644
--- a/src/lib/gssapi/generic/disp_major_status.c
+++ b/src/lib/gssapi/generic/disp_major_status.c
@@ -115,11 +115,8 @@ display_unknown(kind, value, buffer)
{
char *str;
- if ((str =
- (char *) xmalloc(strlen(unknown_error)+strlen(kind)+7)) == NULL)
- return(0);
-
- sprintf(str, unknown_error, kind, value);
+ if (asprintf(&str, unknown_error, kind, value) < 0)
+ return(0);
buffer->length = strlen(str);
buffer->value = str;
diff --git a/src/lib/gssapi/mechglue/oid_ops.c b/src/lib/gssapi/mechglue/oid_ops.c
index 5c2ceb321..2dfbfeae7 100644
--- a/src/lib/gssapi/mechglue/oid_ops.c
+++ b/src/lib/gssapi/mechglue/oid_ops.c
@@ -249,9 +249,9 @@ generic_gss_oid_to_str(minor_status, oid, oid_str)
numshift = 0;
cp = (unsigned char *) oid->elements;
number = (unsigned long) cp[0];
- sprintf(numstr, "%lu ", (unsigned long)number/40);
+ snprintf(numstr, sizeof(numstr), "%lu ", (unsigned long)number/40);
string_length += strlen(numstr);
- sprintf(numstr, "%lu ", (unsigned long)number%40);
+ snprintf(numstr, sizeof(numstr), "%lu ", (unsigned long)number%40);
string_length += strlen(numstr);
for (i=1; i<oid->length; i++) {
if ((OM_uint32) (numshift+7) < (sizeof (OM_uint32)*8)) {/* XXX */
@@ -262,7 +262,7 @@ generic_gss_oid_to_str(minor_status, oid, oid_str)
return(GSS_S_FAILURE);
}
if ((cp[i] & 0x80) == 0) {
- sprintf(numstr, "%lu ", (unsigned long)number);
+ snprintf(numstr, sizeof(numstr), "%lu ", (unsigned long)number);
string_length += strlen(numstr);
number = 0;
numshift = 0;
@@ -276,16 +276,16 @@ generic_gss_oid_to_str(minor_status, oid, oid_str)
if ((bp = (char *) malloc(string_length))) {
strcpy(bp, "{ ");
number = (OM_uint32) cp[0];
- sprintf(numstr, "%lu ", (unsigned long)number/40);
+ snprintf(numstr, sizeof(numstr), "%lu ", (unsigned long)number/40);
strcat(bp, numstr);
- sprintf(numstr, "%lu ", (unsigned long)number%40);
+ snprintf(numstr, sizeof(numstr), "%lu ", (unsigned long)number%40);
strcat(bp, numstr);
number = 0;
cp = (unsigned char *) oid->elements;
for (i=1; i<oid->length; i++) {
number = (number << 7) | (cp[i] & 0x7f);
if ((cp[i] & 0x80) == 0) {
- sprintf(numstr, "%lu ", (unsigned long)number);
+ snprintf(numstr, sizeof(numstr), "%lu ", (unsigned long)number);
strcat(bp, numstr);
number = 0;
}