Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[uri] Refactor URI parsing and formatting
Add support for parsing of URIs containing literal IPv6 addresses
(e.g. "http://[fe80::69ff:fe50:5845%25net0]/boot.ipxe").

Duplicate URIs by directly copying the relevant fields, rather than by
formatting and reparsing a URI string.  This relaxes the requirements
on the URI formatting code and allows it to focus on generating
human-readable URIs (e.g. by not escaping ':' characters within
literal IPv6 addresses).  As a side-effect, this allows relative URIs
containing parameter lists (e.g. "../boot.php##params") to function
as expected.

Add validity check for FTP paths to ensure that only printable
characters are accepted (since FTP is a human-readable line-based
protocol with no support for character escaping).

Construct TFTP next-server+filename URIs directly, rather than parsing
a constructed "tftp://..." string,

Add self-tests for URI functions.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Feb 27, 2014
1 parent c7b69ac commit 7667536
Show file tree
Hide file tree
Showing 12 changed files with 1,312 additions and 437 deletions.
3 changes: 1 addition & 2 deletions src/arch/i386/image/multiboot.c
Expand Up @@ -152,8 +152,7 @@ static physaddr_t multiboot_add_cmdline ( struct image *image ) {
size_t len;

/* Copy image URI to base memory buffer as start of command line */
len = ( unparse_uri ( buf, remaining, image->uri,
URI_ALL ) + 1 /* NUL */ );
len = ( format_uri ( image->uri, buf, remaining ) + 1 /* NUL */ );
if ( len > remaining )
len = remaining;
mb_cmdline_offset += len;
Expand Down

0 comments on commit 7667536

Please sign in to comment.