@@ -94,17 +94,19 @@
94 94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
95 95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Shortcuts for cgi_parameter. P("x") returns the value of query parameter
96 96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** or cookie "x", or NULL if there is no such parameter or cookie. PD("x","y")
97 97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** does the same except "y" is returned in place of NULL if there is not match.
98 98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define P(x) cgi_parameter((x),0)
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define PD(x,y) cgi_parameter((x),(y))
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define PT(x) cgi_parameter_trimmed((x),0)
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define PDT(x,y) cgi_parameter_trimmed((x),(y))
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define PB(x) cgi_parameter_boolean(x)
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define PCK(x) cgi_parameter_checked(x,1)
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define PIF(x,y) cgi_parameter_checked(x,y)
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define P(x) cgi_parameter((x),0)
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PD(x,y) cgi_parameter((x),(y))
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PT(x) cgi_parameter_trimmed((x),0)
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PDT(x,y) cgi_parameter_trimmed((x),(y))
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PB(x) cgi_parameter_boolean(x)
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PCK(x) cgi_parameter_checked(x,1)
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PIF(x,y) cgi_parameter_checked(x,y)
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define P_NoSQL(x) cgi_parameter_nosql((x),0)
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define PD_NoSQL(x,y) cgi_parameter_nosql((x),(y))
106 108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
107 109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
108 110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Shortcut for the cgi_printf() routine. Instead of using the
109 111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
110 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** @ ...
@@ -1504,10 +1506,55 @@
1504 1506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1505 1507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1506 1508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
CGIDEBUG(("no-match [%s]\n", zName));
1507 1509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zDefault;
1508 1510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Renders the "begone, spider" page and exists.
1514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void cgi_begone_spider(void){
1516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob content = empty_blob;
1517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_set_content(&content);
1519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_set_current_feature("test");
1520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("Spider Detected");
1521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <h2>Begone, Spider!</h2>
1522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p>This page was generated because Fossil believes it has
1523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ detected a spider-based attack. If you believe you are seeing
1524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ this in error, please contact us on the forum: https://fossil-scm.org/forum
1525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_finish_page();
1526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_set_status(404,"Spider Detected");
1527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_reply();
1528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ exit(0);
1529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If might_be_sql() returns true for the given string, calls
1533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cgi_begin_spider() and does not return, else this function has no
1534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** side effects. The range of checks performed by this function may
1535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be extended in the future.
1536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void cgi_value_spider_check(const char *zTxt){
1538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( might_be_sql(zTxt) ){
1539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_begone_spider();
1540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** A variant of cgi_parameter() with the same semantics except that if
1545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** the fetched value fails the might_be_sql() test then it calls
1546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** cgi_begone_spider() and does not return.
1547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *cgi_parameter_nosql(const char *zName, const char *zDefault){
1549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTxt = cgi_parameter(zName, zDefault);
1550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zTxt!=zDefault ){
1552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_value_spider_check(zTxt);
1553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return zTxt;
1555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1509 1556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1510 1557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1511 1558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the value of the first defined query parameter or cookie whose
1512 1559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** name appears in the list of arguments. Or if no parameter is found,
1513 1560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** return NULL.
1514 1561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!