mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
Prevent buffer overflow
This commit is contained in:
parent
1c5725010e
commit
9be4df6b7c
@ -340,23 +340,30 @@ pw2entry( Backend *be, struct passwd *pw, const char **text )
|
||||
|
||||
s = strchr(vals[0].bv_val, '&');
|
||||
if (s) {
|
||||
char buf[256];
|
||||
int i = s - vals[0].bv_val;
|
||||
strncpy(buf, vals[0].bv_val, i);
|
||||
s = buf+i;
|
||||
strcpy(s, pw->pw_name);
|
||||
*s = TOUPPER((unsigned char)*s);
|
||||
strcat(s, vals[0].bv_val+i+1);
|
||||
vals[0].bv_val = buf;
|
||||
char buf[1024];
|
||||
|
||||
if( vals[0].bv_len + pwlen < sizeof(buf) ) {
|
||||
int i = s - vals[0].bv_val;
|
||||
strncpy(buf, vals[0].bv_val, i);
|
||||
s = buf+i;
|
||||
strcpy(s, pw->pw_name);
|
||||
*s = TOUPPER((unsigned char)*s);
|
||||
strcat(s, vals[0].bv_val+i+1);
|
||||
vals[0].bv_val = buf;
|
||||
}
|
||||
}
|
||||
vals[0].bv_len = strlen(vals[0].bv_val);
|
||||
if ( strcmp( vals[0].bv_val, pw->pw_name ))
|
||||
|
||||
if ( vals[0].bv_len && strcasecmp( vals[0].bv_val, pw->pw_name )) {
|
||||
attr_merge( e, ad_cn, vals );
|
||||
}
|
||||
|
||||
if ( (s=strrchr(vals[0].bv_val, ' '))) {
|
||||
vals[0].bv_val = s + 1;
|
||||
vals[0].bv_len = strlen(vals[0].bv_val);
|
||||
attr_merge(e, ad_sn, vals);
|
||||
}
|
||||
nogecos:;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user