{
int a, b;
char hex[3];
+ long buflen;
- while ((isspace(buf[strlen(buf) - 1])) && (strlen(buf) > 0))
- buf[strlen(buf) - 1] = 0;
+ buflen = strlen(buf);
- for (a = 0; a < strlen(buf); ++a) {
+ while ((isspace(buf[buflen - 1])) && (buflen > 0)){
+ buf[buflen - 1] = 0;
+ buflen --;
+ }
+
+ for (a = 0; a < buflen; ++a) {
if (buf[a] == '+')
buf[a] = ' ';
if (buf[a] == '%') {
b = 0;
sscanf(hex, "%02x", &b);
buf[a] = (char) b;
- strcpy(&buf[a + 1], &buf[a + 3]);
+ memmove(&buf[a + 1], &buf[a + 3], buflen - a - 2);
+
+ buflen -=2;
}
}
void urlesc(char *outbuf, char *strbuf)
{
int a, b, c;
- char *ec = " #&;`'|*?-~<>^()[]{}$\"\\";
+ char *ec = " #&;`'|*?-~<>^()[]{}/$\"\\";
strcpy(outbuf, "");
void offer_start_page(void) {
wprintf("<a href=\"change_start_page?startpage=");
urlescputs(WC->this_page);
- wprintf("\"><font size=-2 color=\"#AAAAAA\">");
+ wprintf("\">");
wprintf(_("Make this my start page"));
- wprintf("</font></a>");
+ wprintf("</a>");
/*
wprintf("<br/><a href=\"rss?room=");
urlescputs(WC->wc_roomname);
u->url_data = malloc(length + 1);
memcpy(u->url_data, content, length);
u->url_data[length] = 0;
+ /* lprintf(9, "Key: <%s> Data: <%s>\n", u->url_key, u->url_data); */
}
/** Uploaded files */
else
{
lprintf(9, "Suspicious request. Ignoring.");
- wprintf("HTTP/1.1 404 Not found. Don't try to Trick me DUDE!\r\n");
+ wprintf("HTTP/1.1 404 Security check failed\r\n");
wprintf("Content-Type: text/plain\r\n");
wprintf("\r\n");
- wprintf("Not found. Don't play games on me!\r\n");
+ wprintf("Security check failed.\r\n");
}
goto SKIP_ALL_THIS_CRAP; /* Don't try to connect */
}
+ /* If the client sent a nonce that is incorrect, kill the request. */
+ if (!strcasecmp(request_method, "POST")) {
+ lprintf(9, "Comparing supplied nonce %s to session nonce %ld\n",
+ bstr("nonce"), WC->nonce);
+ if (atoi(bstr("nonce")) != WC->nonce) {
+ lprintf(9, "Ignoring request with mismatched nonce.\n");
+ wprintf("HTTP/1.1 404 Security check failed\r\n");
+ wprintf("Content-Type: text/plain\r\n");
+ wprintf("\r\n");
+ wprintf("Security check failed.\r\n");
+ goto SKIP_ALL_THIS_CRAP;
+ }
+ }
+
/**
* If we're not connected to a Citadel server, try to hook up the
* connection now.
begin_ajax_response();
who_inner_div();
end_ajax_response();
+ } else if (!strcasecmp(action, "wholist_section")) {
+ begin_ajax_response();
+ wholist_section();
+ end_ajax_response();
+ } else if (!strcasecmp(action, "new_messages_html")) {
+ begin_ajax_response();
+ new_messages_section();
+ end_ajax_response();
+ } else if (!strcasecmp(action, "tasks_inner_html")) {
+ begin_ajax_response();
+ tasks_section();
+ end_ajax_response();
+ } else if (!strcasecmp(action, "calendar_inner_html")) {
+ begin_ajax_response();
+ calendar_section();
+ end_ajax_response();
} else if (!strcasecmp(action, "iconbar_ajax_menu")) {
begin_ajax_response();
do_iconbar();
recp_autocomplete(bstr("cc"));
} else if (!strcasecmp(action, "bcc_autocomplete")) {
recp_autocomplete(bstr("bcc"));
+ } else if (!strcasecmp(action, "display_address_book_middle_div")) {
+ display_address_book_middle_div();
+ } else if (!strcasecmp(action, "display_address_book_inner_div")) {
+ display_address_book_inner_div();
} else if (!strcasecmp(action, "set_floordiv_expanded")) {
set_floordiv_expanded(index[1]);
} else if (!strcasecmp(action, "diagnostics")) {