• E
    API: add VIR_TYPED_PARAM_STRING · a218c81d
    Eric Blake 提交于
    This allows strings to be transported between client and server
    in the context of name-type-value virTypedParameter functions.
    For compatibility,
    
        o new clients will not send strings to old servers, based on
          a feature check
        o new servers will not send strings to old clients without the
          flag VIR_TYPED_PARAM_STRING_OKAY; this will be enforced at
          the RPC layer in the next patch, so that drivers need not
          worry about it in general.  The one exception is that
          virDomainGetSchedulerParameters lacks a flags argument, so
          it must not return a string; drivers that forward that
          function on to virDomainGetSchedulerParametersFlags will
          have to pay attention to the flag.
        o the flag VIR_TYPED_PARAM_STRING_OKAY is set automatically,
          based on a feature check (so far, no driver implements it),
          so clients do not have to worry about it
    
    Future patches can then enable the feature on a per-driver basis.
    
    This patch also ensures that drivers can blindly strdup() field
    names (previously, a malicious client could stuff 80 non-NUL bytes
    into field and cause a read overrun).
    
    * src/libvirt_internal.h (VIR_DRV_FEATURE_TYPED_PARAM_STRING): New
    driver feature.
    * src/libvirt.c (virTypedParameterValidateSet)
    (virTypedParameterSanitizeGet): New helper functions.
    (virDomainSetMemoryParameters, virDomainSetBlkioParameters)
    (virDomainSetSchedulerParameters)
    (virDomainSetSchedulerParametersFlags)
    (virDomainGetMemoryParameters, virDomainGetBlkioParameters)
    (virDomainGetSchedulerParameters)
    (virDomainGetSchedulerParametersFlags, virDomainBlockStatsFlags):
    Use them.
    * src/util/util.h (virTypedParameterArrayClear): New helper
    function.
    * src/util/util.c (virTypedParameterArrayClear): Implement it.
    * src/libvirt_private.syms (util.h): Export it.
    Based on an initial patch by Hu Tao, with feedback from
    Daniel P. Berrange.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    a218c81d
libvirt_private.syms 29.5 KB