[PATCH setup] Don't write garbage into the "extrakeys" user setting

Ken Brown kbrown@cornell.edu
Tue Nov 28 12:58:00 GMT 2017


On 11/27/2017 9:14 PM, Ken Brown wrote:
> On 11/27/2017 5:19 PM, Ken Brown wrote:
>> On 11/27/2017 4:35 PM, Ken Brown wrote:
>>> The ExtraKeysSetting destructor called UserSettings::set() on a string
>>> that was terminated by LF instead of NUL.  This led to garbage at the
>>> end of the "extrakeys" setting that was written into setup.rc.  Fix
>>> this by replacing the final LF by NUL before calling set().
>>
>> Disregard this for now.  I've just discovered some further issues 
>> involving "extrakeys", and I'd like to fix them all at once.
> 
> Here's an amusing fact: "extrakeys" has apparently been useless for many 
> years, so that the '-u' option to setup cannot have worked.  The reason 
> is that '#' is a comment character in setup.rc, and the saved keys 
> contain several of these.  (Originally the saved keys were kept in a 
> file /etc/setup/last-extrakeys, which did not contain comments, but this 
> was changed in 2009 to use /etc/setup/setup.rc.)
> 
> Here's an example from my own setup.rc after running 'setup -K ...':
> 
> extrakeys
>      (public-key (dsa (p 
> #00DE8D7944FA1731C7D66C17E3928E1CD6D06092B4DD549B96773B24F4F8C0609912EB2158379F7F37DF4BF3F42BF4131DAD1AC27B998398B635147B605F5D5276F0BBF66ECA4583A474A578C82A08EDE6802A74B39EAC62BC7EA7DE5BE721E23A51EDFC68B32A5F8462C071AFDCEA11576F39AC5646F87CEB37A67FE7A2421787#) 
> (q #00C2D926EC5053000FF6BAFFA16D39161F8DE16BDF#) (g 
> #0095E00E78F13C69274EE7724F2ECA34556ABA6B04EA05C06546F8CD7553807F22EF125AFE01541F82C2AF661C7F7036EDB3A0CC1F8BBB8E5E4F9CF01C179702415B9D2875EDD5AECACF85A87850E71DB1F3BA88EAE1C053ECC35507295C953E8DCBE701CE9BB3DB6E2AE35193A1503695338C448AB532571999BB4BFFFCBC9F2E#) 
> (y 
> #6F06E2269F93DC76794E63B6C9B56FAF0E57193FA890197BFB6C93BC9FE91C226EBACA0538CE229617E43A15972078574D907479375D4D3CCEA62C0A7A4E1F8D4D02401232DDF86471CD2D18F47E0C0AF9F32A36D0A609972DA79A762AFDBBD9B66F3AC26F490CB526CF9005B7FE4FDF560268EF4ED3E3ED7D9030BB6157D4B8#) 
> ) )
> 
> [The part below "extrakeys" is all one line.]
> 
> Everything after the first '#' is discarded, and "extrakeys" is 
> effectively set to "(public-key (dsa (p ".
> 
> Out of sheer laziness, I'd like to fix this by no longer treating '#' as 
> a comment character.  The only use of it I've seen is in site.cc to 
> write a comment about dropped mirrors being saved, although there might 
> be other uses that I've missed.
> 
> If this is not acceptable, then I guess we have to use something like 
> '\#' to escape '#', or else choose a different comment character.

Another possibility, which I think would require only minimal changes, 
is to treat '#' as a comment character only if it's the first 
non-whitespace character on a line.

Ken



More information about the Cygwin-apps mailing list