fix bug in fmt_ldapsearchfilter
free memory for requests we can't handle yet
This commit is contained in:
62
tinyldap.c
62
tinyldap.c
@@ -784,6 +784,8 @@ found:
|
||||
x=x->next;
|
||||
} while (x);
|
||||
}
|
||||
/* TODO: do something with the modify request ;-) */
|
||||
free_ldapmodifyrequest(&mr);
|
||||
} else {
|
||||
buffer_putsflush(buffer_2,"couldn't parse modify request!\n");
|
||||
exit(1);
|
||||
@@ -795,39 +797,41 @@ found:
|
||||
break;
|
||||
case AddRequest:
|
||||
{
|
||||
struct AddRequest ar;
|
||||
struct AddRequest ar;
|
||||
// buffer_putsflush(buffer_2,"AddRequest!\n");
|
||||
if ((tmp=scan_ldapaddrequest(buf+res,buf+res+len,&ar))) {
|
||||
} else {
|
||||
buffer_putsflush(buffer_2,"couldn't parse add request!\n");
|
||||
exit(1);
|
||||
}
|
||||
/* TODO: do something with the add request ;-) */
|
||||
free_ldapaddrequest(&ar);
|
||||
} else {
|
||||
buffer_putsflush(buffer_2,"couldn't parse add request!\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
buffer_put(buffer_1,ar.entry.s,ar.entry.l);
|
||||
buffer_putsflush(buffer_1,"\n");
|
||||
if (verbose) { /* iterate all attributes */
|
||||
struct Addition * x;
|
||||
struct AttributeDescriptionList * y;
|
||||
for (x = &ar.a;x;x=x->next) {
|
||||
for (y = &x->vals;y;y=y->next) {
|
||||
buffer_put(buffer_1,x->AttributeDescription.s,x->AttributeDescription.l);
|
||||
buffer_puts(buffer_1,": ");
|
||||
buffer_put(buffer_1,y->a.s,y->a.l);
|
||||
buffer_putsflush(buffer_1,"\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
buffer_put(buffer_1,ar.entry.s,ar.entry.l);
|
||||
buffer_putsflush(buffer_1,"\n");
|
||||
if (verbose) { /* iterate all attributes */
|
||||
struct Addition * x;
|
||||
struct AttributeDescriptionList * y;
|
||||
for (x = &ar.a;x;x=x->next) {
|
||||
for (y = &x->vals;y;y=y->next) {
|
||||
buffer_put(buffer_1,x->AttributeDescription.s,x->AttributeDescription.l);
|
||||
buffer_puts(buffer_1,": ");
|
||||
buffer_put(buffer_1,y->a.s,y->a.l);
|
||||
buffer_putsflush(buffer_1,"\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
char outbuf[1024];
|
||||
int s=100;
|
||||
int len=fmt_ldapbindresponse(outbuf+s,0,"","","");
|
||||
int hlen=fmt_ldapmessage(0,messageid,AddResponse,len);
|
||||
fmt_ldapmessage(outbuf+s-hlen,messageid,AddResponse,len);
|
||||
write(out,outbuf+s-hlen,len+hlen);
|
||||
}
|
||||
}
|
||||
break;
|
||||
{
|
||||
char outbuf[1024];
|
||||
int s=100;
|
||||
int len=fmt_ldapbindresponse(outbuf+s,0,"","","");
|
||||
int hlen=fmt_ldapmessage(0,messageid,AddResponse,len);
|
||||
fmt_ldapmessage(outbuf+s-hlen,messageid,AddResponse,len);
|
||||
write(out,outbuf+s-hlen,len+hlen);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
buffer_puts(buffer_2,"unknown request type ");
|
||||
buffer_putulong(buffer_2,op);
|
||||
|
||||
Reference in New Issue
Block a user