Greg Bruno wrote:
> for ganglia v3.1.2, the patch below ensures that all 'string' metrics
> are null terminated for python-based user metrics. without this patch,
> any string metric that is longer than MAX_G_STRING_SIZE (currently 32
> bytes), will not be null terminated and will corrupt the value in the
> metric.

Committed to trunk in r2000, and proposed for backporting to the 3.1.x tree. 
Thanks for the patch.

> also, regarding MAX_G_STRING_SIZE, would it be possible to increase it
> in future releases? i've currently set it to 128 in
> include/gm_value.h.

I don't object, although I'm not the most familiar with this part of the code. 
  I'm curious:  what metrics are you trying to use that are that long?

> 
>  - gb
> 
> 
> =============
> *** ganglia-3.1.2/gmond/modules/python/mod_python.c   2009-01-28
> 15:23:20.000000000 -0800
> --- /tmp/patch-files/gmond/modules/python/mod_python.c        2009-07-08
> 13:04:40.000000000 -0700
> ***************
> *** 127,134 ****
> --- 127,138 ----
>       }
>       else if (PyString_Check(dv)) {
>           char* p = PyString_AsString(dv);
>           strncpy(bfr, p, len);
> +         /*
> +          * ensure bfr is null terminated
> +          */
> +         bfr[len-1] = '\0';
>       }
>       else if (PyFloat_Check(dv)) {
>           double v = PyFloat_AsDouble(dv);
>           snprintf(bfr, len, "%f", v);
> ***************
> *** 422,430 ****
>       gmi->name = apr_pstrdup (pool, minfo->mname);
>       gmi->tmax = minfo->tmax;
>       if (!strcasecmp(minfo->vtype, "string")) {
>           gmi->type = GANGLIA_VALUE_STRING;
> !         gmi->msg_size = UDP_HEADER_SIZE+32;
>       }
>       else if (!strcasecmp(minfo->vtype, "uint")) {
>           gmi->type = GANGLIA_VALUE_UNSIGNED_INT;
>           gmi->msg_size = UDP_HEADER_SIZE+8;
> --- 426,434 ----
>       gmi->name = apr_pstrdup (pool, minfo->mname);
>       gmi->tmax = minfo->tmax;
>       if (!strcasecmp(minfo->vtype, "string")) {
>           gmi->type = GANGLIA_VALUE_STRING;
> !         gmi->msg_size = UDP_HEADER_SIZE+MAX_G_STRING_SIZE;
>       }
>       else if (!strcasecmp(minfo->vtype, "uint")) {
>           gmi->type = GANGLIA_VALUE_UNSIGNED_INT;
>           gmi->msg_size = UDP_HEADER_SIZE+8;
> =============
> 
> ------------------------------------------------------------------------------
> Enter the BlackBerry Developer Challenge  
> This is your chance to win up to $100,000 in prizes! For a limited time, 
> vendors submitting new applications to BlackBerry App World(TM) will have
> the opportunity to enter the BlackBerry Developer Challenge. See full prize  
> details at: http://p.sf.net/sfu/Challenge
> _______________________________________________
> Ganglia-developers mailing list
> Ganglia-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ganglia-developers
> 


-- 
Jesse Becker
NHGRI Linux support (Digicon Contractor)

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Ganglia-developers mailing list
Ganglia-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ganglia-developers

Reply via email to