Anonymous | Login | 2025-01-23 00:05 UTC |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||
ID | Category | Severity | Type | Date Submitted | Last Update | ||
0000322 | [1003.1(2004)/Issue 6] Shell and Utilities | Objection | Omission | 2010-09-18 18:01 | 2010-09-18 18:20 | ||
Reporter | Don Cragun | View Status | public | ||||
Assigned To | ajosey | ||||||
Priority | normal | Resolution | Rejected | ||||
Status | Closed | ||||||
Name | Nick Stoughton | ||||||
Organization | USENIX | ||||||
User Reference | nms-hex-string | ||||||
Section | printf | ||||||
Page Number | 743 | ||||||
Line Number | 28941-28944 | ||||||
Interp Status | --- | ||||||
Final Accepted Text | |||||||
Summary | 0000322: Defect in XCU File Format Notation | ||||||
Description |
The printf utility in XCU and the printf library interface in XSH (and C99) have great similarity, but are not completely aligned. In particular, C99 allows additional escape sequences in the format string (which in C99 is just an array of characters). C99 defines a character constant as including an escape sequence: escape-sequence: simple-escape-sequence octal-escape-sequence hexadecimal-escape-sequence universal-character-name The file format notation (used by the printf utility) has the first two of these (the simple escape sequence is slightly different, though not in a way that is detectable, in that it does not explicitly require \' \" and \? processing, but the shell for The file format notation does not require hexadecimal or universal character names. Hexadecimal escapes in particular are commonly implemented as extensions (e.g. coreutils), and frequently used when patching binary files. Indeed, coreutils also implements universal-character-names. |
||||||
Desired Action |
(draft 3.4 page XCU 3038 line 100761)change: In addition to the escape sequences shown in XBD Chapter 5 (on page 119) (\\, \a, \b, \f, \n, \r, \t, \v), "\ddd", where ddd is a one, two, or three-digit octal number, shall be written as a byte with the numeric value specified by the octal number. to In addition to the escape sequences shown in XBD Chapter 5 (on page 119) (\\, \a, \b, \f, \n, \r, \t, \v), the following escape sequences shall also be recognized: + "\ddd", where ddd is a one, two, or three-digit octal number, shall be written as a byte with the numeric value specified by the octal number. + "\xdd", where dd is a one or two digit hexadecimal number, shall be written as a byte with the numeric value specified by the hexadecimal number. + "\udddd", where dddd is a four character hexadecimal number, shall be written as the character whose four-digit short identifier as specified by ISO/IEC 10646) is dddd, except that a character whose short identifier is less than 00A0 other than 0024 ($), 0040 (@), or 0060 (), or one in the range D800 through DFFF inclusive need not be supported. + "\Udddddddd", where dddddddd is an eight character hexadecimal number shall be written as the character whose eight-digit short identifier as specified by ISO/IEC 10646) is dddddddd, except that a character whose short identifier is less than 000000A0 other than 00000024 ($), 00000040 (@), or 00000060 (), or one in the range 0000D800 through 0000DFFF inclusive need not be supported. NOTE: The disallowed characters are the characters in the basic character set and the code positions reserved by ISO/IEC 10646 for control characters, the character DELETE, and the S-zone (reserved for use by UTF−16) ======= Before line 100778 (d3.4), insert the following: + "\xdd" where dd is a one, or two digit hexadecimal number that shall be converted to a byte with the numeric value specified by the hexadecimal number |
||||||
Tags | No tags attached. | ||||||
Attached Files | |||||||
|
Relationships | |||||||
|
Notes | |
(0000556) Don Cragun (manager) 2010-09-18 18:08 |
This item was sent down the interpretations track as AI-211, but encountered significant objections. Hence this item has been rejected. The former disposition of the bug is enclosed here: ERN 177(->interps track) AI-211 Send down the interps track, the std is silent on the issue Take the changes in the Desired Action and then also update the section of APP USAGE to line 100839 in d3.4 top of page 3040 The treatment of hexadecimal escapes in the format operand differs from the way hexadecimal character constants are recognized in a C string literal used as the format argument for the printf() family of functions. In the printf utility they are limited to two hexadecimal digits because otherwise there would be no consistent way to detect the end of the constant. In C string literals, hexadecimal escape sequences are only terminated by a non-hex-digit character or the end of the string literal; concatenation of adjacent string literals can be used to terminate an escape sequence and follow it with a hexadecimal character to be written. In the shell, concatenation occurs before the printf utility has a chance to parse the end of the hexadecimal constant. |
(0000557) Don Cragun (manager) 2010-09-18 18:20 edited on: 2010-09-20 22:08 |
As noted in Note: 0000556 an attempt to approve the proposed resolution as an interpretation encountered significant objections. The discussion concerning this proposal can be found in austin-group-l e-mail sequence numbers: 11363, 11373-11374, 11502, 11509-11510, 11512-11514, 11516, and 11519-11528. See 0000249 for a request to add $'...' to the shell as proposed by some in the above discussion. |
Mantis 1.1.6[^] Copyright © 2000 - 2008 Mantis Group |