argus-clients-3.0.0.rc.14 user data print patch

Carter Bullard carter at qosient.com
Fri Jun 30 09:13:51 EDT 2006


Hey Peter,
    So I'm back on the job, so to speak.  I've got this bug fixed, but
with the v2 -> v3 length issue, can you grab a record that generates
the inconsistency?  I can fix it quickly if I have a record.

Carter


On Jun 29, 2006, at 11:45 PM, Peter Van Epp wrote:

> 	Below is a patch against argus-clients-3.0.0.rc.14 to fix a user data
> printing bug (actually two of them :-)). In the case where there is  
> no data
> conbuf doesn't get zeroed and the source data prints in the dest field
> (presumably garbage will print in the source field should it have  
> no data).
> Adding and moving the bcopy before the data test fixes this (and  
> makes ra_test
> a lot happier). There is still a bug in counts somewhere though:
>
> ra2: ,s[4]=":/A.",
> ra3: ,s[8]=":/A.....",
>
> which will likely be next on the agenda.
>
> Peter Van Epp / Operations and Technical Support
> Simon Fraser University, Burnaby, B.C. Canada
>
>
> *** common/argus_util.c.orig	Thu Jun 29 20:18:36 2006
> --- common/argus_util.c	Thu Jun 29 20:30:45 2006
> ***************
> *** 8108,8113 ****
> --- 8108,8114 ----
>         exlen += 8;
>         if (len > 10) exlen++;
>
> +       bzero (conbuf, sizeof(conbuf));
>         if ((user = (struct ArgusDataStruct *)argus->dsrs 
> [ARGUS_SRCUSERDATA_INDEX]) != NULL) {
>            unsigned short *sptr = &user->hdr.argus_dsrvl16.len;
>            slen = (*sptr - 2 ) * 4;
> ***************
> *** 8170,8175 ****
> --- 8171,8177 ----
>         exlen += 8;
>         if (len > 10) exlen++;
>
> +       bzero (conbuf, sizeof(conbuf));
>         if ((user = (struct ArgusDataStruct *)argus->dsrs 
> [ARGUS_DSTUSERDATA_INDEX]) != NULL) {
>            unsigned short *sptr = &user->hdr.argus_dsrvl16.len;
>            slen = (*sptr - 2 ) * 4;
> ***************
> *** 8177,8183 ****
>            slen = (slen > len) ? len : slen;
>
>            bzero (strbuf, sizeof(strbuf));
> -          bzero (conbuf, sizeof(conbuf));
>
>            if ((slen = ArgusEncode (parser, (const char *)&user- 
> >array, NULL, slen, str, sizeof(strbuf))) > 0)
>               sprintf (con, "d[%d]=%s", slen, str);
> --- 8179,8184 ----
>






More information about the argus mailing list