[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[Libevent-users] Defensive coding in http?



Hi all,



(first post)



On tracking down a segfault I am getting in evhttp_clear_headers() (caused by my
code) I noticed that it doesn't validate its parameter or attempt to keep going
if passed null (see 2.0.19-stable code below). I am wondering if this is a
deliberate coding style for libevent. I.e., on seeing something like this,
should I be working around it in my own code or submitting a patch to http.c?



The functions forming the http API to application code seem generally to be
trusting of their parameters in this same way. Would contributions of more
assertions and defensive coding be welcome?



Thanks very much for your advice.



Best,

Andrew Cox



void
evhttp_clear_headers(struct evkeyvalq *headers)
{
   struct evkeyval *header;



   // [AHC} headers may be null, *headers may not be initialised



   for (header = TAILQ_FIRST(headers);
      header != NULL;
      header = TAILQ_FIRST(headers)) {
      TAILQ_REMOVE(headers, header, next);
      mm_free(header->key);
      mm_free(header->value);
      mm_free(header);
   }
}
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.