if (al->request)
sb = al->request->header.getByName(fmt->data.header.header);
- out = sb.unsafeBuf();
+ out = sb.termedBuf();
quote = 1;
if (al->reply)
sb = al->reply->header.getByName(fmt->data.header.header);
- out = sb.unsafeBuf();
+ out = sb.termedBuf();
quote = 1;
if (al->request)
sb = al->request->header.getByNameListMember(fmt->data.header.header, fmt->data.header.element, fmt->data.header.separator);
- out = sb.unsafeBuf();
+ out = sb.termedBuf();
quote = 1;
if (al->reply)
sb = al->reply->header.getByNameListMember(fmt->data.header.header, fmt->data.header.element, fmt->data.header.separator);
- out = sb.unsafeBuf();
+ out = sb.termedBuf();
quote = 1;
case LFT_REQUEST_URLPATH:
if (al->request) {
- out = al->request->urlpath.unsafeBuf();
+ out = al->request->urlpath.termedBuf();
quote = 1;
}
break;
case LFT_TAG:
if (al->request)
- out = al->request->tag.unsafeBuf();
+ out = al->request->tag.termedBuf();
quote = 1;
case LFT_EXT_LOG:
if (al->request)
- out = al->request->extacl_log.unsafeBuf();
+ out = al->request->extacl_log.termedBuf();
quote = 1;
char *getHost (String &urlpath);
void setUriResFromRequest(HttpRequest *);
bool RequestNeedsMenu(HttpRequest *r);
- void updateRequestURL(HttpRequest *r, char const *newPath);
+ void updateRequestURL(HttpRequest *r, char const *newPath, const size_t newPath_len);
void createUriResRequest (String &uri);
virtual ~UrnState();
bool
UrnState::RequestNeedsMenu(HttpRequest *r)
{
- return strncasecmp(r->urlpath.unsafeBuf(), "menu.", 5) == 0;
+ if (r->urlpath.size() < 5)
+ return false;
+ //now we're sure it's long enough
+ return strncasecmp(r->urlpath.rawBuf(), "menu.", 5) == 0;
}
void
-UrnState::updateRequestURL(HttpRequest *r, char const *newPath)
+UrnState::updateRequestURL(HttpRequest *r, char const *newPath, const size_t newPath_len)
{
- char *new_path = xstrdup (newPath);
+ char *new_path = xstrndup (newPath, newPath_len);
r->urlpath = new_path;
xfree(new_path);
}
{
LOCAL_ARRAY(char, local_urlres, 4096);
char *host = getHost (uri);
- snprintf(local_urlres, 4096, "http://%s/uri-res/N2L?urn:%s", host, uri.unsafeBuf());
+ snprintf(local_urlres, 4096, "http://%s/uri-res/N2L?urn:%.*s", host, uri.size(), uri.rawBuf());
safe_free (host);
safe_free (urlres);
urlres = xstrdup (local_urlres);
UrnState::setUriResFromRequest(HttpRequest *r)
{
if (RequestNeedsMenu(r)) {
- updateRequestURL(r, r->urlpath.unsafeBuf() + 5);
+ updateRequestURL(r, r->urlpath.rawBuf() + 5, r->urlpath.size() - 5 );
flags.force_menu = 1;
}
buf = (char *)xmalloc(l);
- snprintf(buf, l, "%s\r\n", p->request->urlpath.unsafeBuf() + 1);
+ snprintf(buf, l, "%.*s\r\n", p->request->urlpath.size()-1, p->request->urlpath.rawBuf() + 1);
comm_write(fd, buf, strlen(buf), whoisWriteComplete, p, NULL);
comm_read(fd, p->buf, BUFSIZ, whoisReadReply, p);