[BACK]Return to cgi.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/cgi.c between version 1.92 and 1.95

version 1.92, 2014/08/05 15:29:30 version 1.95, 2014/08/21 16:05:21
Line 15 
Line 15 
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */   */
 #ifdef HAVE_CONFIG_H  
 #include "config.h"  #include "config.h"
 #endif  
   
   #include <sys/types.h>
   #include <sys/time.h>
   
 #include <ctype.h>  #include <ctype.h>
 #include <errno.h>  #include <errno.h>
 #include <fcntl.h>  #include <fcntl.h>
Line 973  pg_search(const struct req *req)
Line 974  pg_search(const struct req *req)
   
         search.arch = req->q.arch;          search.arch = req->q.arch;
         search.sec = req->q.sec;          search.sec = req->q.sec;
         search.deftype = req->q.equal ? TYPE_Nm : (TYPE_Nm | TYPE_Nd);          search.outkey = "Nd";
         search.flags = req->q.equal ? MANSEARCH_MAN : 0;          search.argmode = req->q.equal ? ARG_NAME : ARG_EXPR;
   
         paths.sz = 1;          paths.sz = 1;
         paths.paths = mandoc_malloc(sizeof(char *));          paths.paths = mandoc_malloc(sizeof(char *));
Line 1003  pg_search(const struct req *req)
Line 1004  pg_search(const struct req *req)
                         ep++;                          ep++;
         }          }
   
         if (0 == mansearch(&search, &paths, sz, cp, "Nd", &res, &ressz))          if (0 == mansearch(&search, &paths, sz, cp, &res, &ressz))
                 pg_noresult(req, "You entered an invalid query.");                  pg_noresult(req, "You entered an invalid query.");
         else if (0 == ressz)          else if (0 == ressz)
                 pg_noresult(req, "No results found.");                  pg_noresult(req, "No results found.");
Line 1029  int
Line 1030  int
 main(void)  main(void)
 {  {
         struct req       req;          struct req       req;
           struct itimerval itimer;
         const char      *path;          const char      *path;
         const char      *querystring;          const char      *querystring;
         int              i;          int              i;
   
           /* Poor man's ReDoS mitigation. */
   
           itimer.it_value.tv_sec = 1;
           itimer.it_value.tv_usec = 0;
           itimer.it_interval.tv_sec = 1;
           itimer.it_interval.tv_usec = 0;
           if (setitimer(ITIMER_VIRTUAL, &itimer, NULL) == -1) {
                   fprintf(stderr, "setitimer: %s\n", strerror(errno));
                   pg_error_internal();
                   return(EXIT_FAILURE);
           }
   
         /* Scan our run-time environment. */          /* Scan our run-time environment. */
   

Legend:
Removed from v.1.92  
changed lines
  Added in v.1.95

CVSweb