Use strict mode when url-decoding file requests.

We don't want '+' to become a space here.
Fixes #11109.
This commit is contained in:
Adrien Destugues
2014-10-21 11:31:48 +02:00
parent 6da9451eba
commit 06f436b3ac
10 changed files with 42 additions and 18 deletions
+4
View File
@@ -483,11 +483,15 @@ rule ArchitectureSetupWarnings architecture
EnableWerror src add-ons kernel bus_managers ata ;
EnableWerror src add-ons kernel bus_managers config_manager ;
# EnableWerror src add-ons kernel bus_managers firewire ;
# EnableWerror src add-ons kernel bus_managers ide ;
EnableWerror src add-ons kernel bus_managers isa ;
EnableWerror src add-ons kernel bus_managers pci ;
# EnableWerror src add-ons kernel bus_managers ps2 ; # gcc2
# EnableWerror src add-ons kernel bus_managers random ;
EnableWerror src add-ons kernel bus_managers scsi ;
# EnableWerror src add-ons kernel bus_managers tty ;
EnableWerror src add-ons kernel bus_managers usb ;
# EnableWerror src add-ons kernel bus_managers virtio ;
EnableWerror src add-ons kernel busses agp_gart ;
EnableWerror src add-ons kernel busses ata ;
EnableWerror src add-ons kernel busses scsi ;
-2
View File
@@ -12,10 +12,8 @@
namespace icu {
class Collator;
class RuleBasedCollator;
};
class BString;
class BCollatorAddOn;
+1 -1
View File
@@ -44,7 +44,7 @@ public:
void AdoptPostFields(BHttpForm* const fields);
void AdoptInputData(BDataIO* const data,
const ssize_t size = -1);
void AdoptHeaders(BHttpHeaders* const headers);
void AdoptHeaders(BHttpHeaders* const headers);
status_t Stop();
const BUrlResult& Result() const;
@@ -170,9 +170,9 @@ typedef struct driver_cookie
_EXPORT int32 api_version = B_CUR_DRIVER_API_VERSION;
const char* usb_midi_driver_name = "usb_midi";
static const char* usb_midi_driver_name = "usb_midi";
const int CINbytes[] = { /* See USB-MIDI Spec */
static const int CINbytes[] = { /* See USB-MIDI Spec */
0, /* 0x0 -- undefined Misc -- Reserved */
0, /* 0x1 -- undefined Cable -- Reserved */
2, /* 0x2 -- 2-byte system common */
@@ -199,14 +199,16 @@ interpret_midi_buffer(usbmidi_device_info* midiDevice)
{
usb_midi_event_packet* packet = midiDevice->buffer;
size_t bytes_left = midiDevice->actual_length;
while (bytes_left) { /* buffer may have several packets */
int pktlen = CINbytes[packet->cin];
usbmidi_port_info* port = midiDevice->ports[packet->cn];
/* buffer may have several packets */
while (bytes_left >= sizeof(usb_midi_event_packet)) {
DPRINTF_DEBUG((MY_ID "received packet %x:%d %x %x %x\n",
packet->cin, packet->cn,
packet->midi[0], packet->midi[1], packet->midi[2]));
int pktlen = CINbytes[packet->cin];
usbmidi_port_info* port = midiDevice->ports[packet->cn];
/* port matching 'cable number' */
if (port == NULL) {
DPRINTF_ERR((MY_ID "no port matching cable number %d!\n",
+23 -4
View File
@@ -10,6 +10,7 @@
#include <Entry.h>
#include <File.h>
#include <Font.h>
#include <Layout.h>
#include <ScrollBar.h>
@@ -87,8 +88,8 @@ TermView::Draw(BRect updateRect)
background.blue = cell.bg.blue;
background.alpha = 255;
if ((cell.attrs.reverse != 0) ^ (pos.col == cursorPos.col
&& pos.row == cursorPos.row)) {
// Draw the cursor by swapping foreground and background colors
if ((pos.col == cursorPos.col && pos.row == cursorPos.row)) {
SetLowColor(foreground);
SetViewColor(foreground);
SetHighColor(background);
@@ -103,10 +104,28 @@ TermView::Draw(BRect updateRect)
y + ceil(height.descent) + ceil(height.leading)),
B_SOLID_LOW);
BFont font = be_fixed_font;
if (cell.attrs.bold)
font.SetFace(B_BOLD_FACE);
if (cell.attrs.underline)
font.SetFace(B_UNDERSCORE_FACE);
if (cell.attrs.italic)
font.SetFace(B_ITALIC_FACE);
if (cell.attrs.blink) // FIXME make it actually blink
font.SetFace(B_OUTLINED_FACE);
if (cell.attrs.reverse)
font.SetFace(B_NEGATIVE_FACE);
if (cell.attrs.strike)
font.SetFace(B_STRIKEOUT_FACE);
// TODO handle "font" (alternate fonts), dwl and dhl (double size)
SetFont(&font);
if (cell.chars[0] == 0) {
x += fFontWidth;
MovePenTo(x, y);
DrawString(" ");
pos.col ++;
x += fFontWidth;
} else {
char buffer[VTERM_MAX_CHARS_PER_CELL];
wcstombs(buffer, (wchar_t*)cell.chars,
+1 -1
View File
@@ -6,7 +6,7 @@ resource(1, "META:TYPE") "text/html";
resource(2, "META:SNIFF_RULE") #'CSTR' array {
"0.40 [0:512]( -i \"<HTML\" | \"<HEAD\" | \"<TITLE\" | \"<BODY\" | "
"\"<TABLE\" | \"<META\" | \"<CENTER\" | \"<!DOCTYPE HTML\" | \"<SCRIPT\" | "
"\"<STYLE\" | \"<A HREF\" )"
"\"<STYLE\" | \"<A HREF\" | \"<BR/>\" )"
};
resource(3, "META:S:DESC") #'MSDC' "HTML file";
+1 -1
View File
@@ -23,7 +23,7 @@ BFileRequest::BFileRequest(const BUrl& url, BUrlProtocolListener* listener,
BUrlRequest(url, listener, context, "BUrlProtocol.File", "file"),
fResult()
{
fUrl.UrlDecode();
fUrl.UrlDecode(true);
}
+3 -1
View File
@@ -19,8 +19,10 @@
#include <HttpTime.h>
#include <NetworkCookie.h>
using BPrivate::BHttpTime;
static const char* kArchivedCookieName = "be:cookie.name";
static const char* kArchivedCookieValue = "be:cookie.value";
static const char* kArchivedCookieDomain = "be:cookie.domain";
@@ -159,7 +161,7 @@ BNetworkCookie::ParseCookieString(const BString& string, const BUrl& url)
long maxAge = strtol(value.String(), &end, 10);
if (*end == '\0')
SetMaxAge((int)maxAge);
else if(errno == ERANGE && maxAge == LONG_MAX)
else if (errno == ERANGE && maxAge == LONG_MAX)
SetMaxAge(INT_MAX);
else
SetMaxAge(-1); // cookie will expire immediately
@@ -26,8 +26,7 @@ BUrlProtocolAsynchronousListener::BUrlProtocolAsynchronousListener(
if (be_app->Lock()) {
be_app->AddHandler(this);
be_app->Unlock();
}
else
} else
PRINT(("Cannot lock be_app\n"));
if (transparent) {
@@ -316,7 +316,7 @@ public:
}
private:
const Transformable& fTransform;
const Transformable& fTransform;
const BPoint& fTransformOffset;
const IntRect& fClippingFrame;
bool fDryRun;