• Alex Elder's avatar
    rbd: don't use sscanf() in rbd_add_parse_args() · e28fff26
    Alex Elder authored
    Make use of a few simple helper routines to parse the arguments
    rather than sscanf().  This will treat both missing and too-long
    arguments as invalid input (rather than silently truncating the
    input in the too-long case).  In time this can also be used by
    rbd_add() to use the passed-in buffer in place, rather than copying
    its contents into new buffers.
    
    It appears to me that the sscanf() previously used would not
    correctly handle a supplied snapshot--the two final "%s" conversion
    specifications were not separated by a space, and I'm not sure
    how sscanf() handles that situation.  It may not be well-defined.
    So that may be a bug this change fixes (but I didn't verify that).
    
    The sizes of the mon_addrs and options buffers are now passed to
    rbd_add_parse_args(), so they can be supplied to copy_token().
    Signed-off-by: default avatarAlex Elder <elder@dreamhost.com>
    e28fff26
rbd.c 57.2 KB