More possibly silly command line options lead to a segfault

Jesse Bowling jessebowling at gmail.com
Tue Jul 16 23:46:18 EDT 2013


Michael sent me the following, which seems to prevent the segfault, and
also gives more debug output:

diff -rupN argus-clients-3.0.9.orig/common/argus_util.c
argus-clients-3.0.7.9/common/argus_util.c
--- argus-clients-3.0.9.orig/common/argus_util.c    2013-07-16
23:26:38.176547355 -0400
+++ argus-clients-3.0.7.9/common/argus_util.c    2013-07-16
23:28:02.034657357 -0400
@@ -1919,7 +1919,7 @@ ArgusParseResourceFile (struct ArgusPars
 #ifdef ARGUS_SASL
                                  ArgusMinSsf = atoi(optarg);
 #ifdef ARGUSDEBUG
-                              ArgusDebug (2, "ArgusParseResourceFile:
ArgusMinSsf \"%s\" \n", ArgusMinSsf);
+                              ArgusDebug (2, "ArgusParseResourceFile:
ArgusMinSsf \"%d\" \n", ArgusMinSsf);
 #endif
 #endif
                               }
@@ -1931,7 +1931,7 @@ ArgusParseResourceFile (struct ArgusPars
 #ifdef ARGUS_SASL
                                  ArgusMaxSsf = atoi(optarg);
 #ifdef ARGUSDEBUG
-                                 ArgusDebug (2, "ArgusParseResourceFile:
ArgusMaxSsf \"%s\" \n", ArgusMaxSsf);
+                                 ArgusDebug (2, "ArgusParseResourceFile:
ArgusMaxSsf \"%d\" \n", ArgusMaxSsf);
 #endif
 #endif
                               }

It seems that debug isn't turned on until the argument is parsed, a
subtlety that previously escaped me. Seems it would be best, in general, to
specify -D as the first argument in an invocation we wish to test...

Cheers,

Jesse


On Tue, Jul 16, 2013 at 11:19 PM, Jesse Bowling <jessebowling at gmail.com>wrote:

> Forgot to mention using argus-clients-3.0.7.9...
>
> Cheers,
>
> Jesse
>
>
> On Tue, Jul 16, 2013 at 10:06 PM, Jesse Bowling <jessebowling at gmail.com>wrote:
>
>> While trying to work out my SASL issue, I've instead found another
>> segfault...
>>
>> Starting program: /usr/local/bin/ra -S localhost -D 10 -F /etc/ra.conf
>> [Thread debugging using libthread_db enabled]
>>
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x0000003baa8480ac in vfprintf () from /lib64/libc.so.6
>> Missing separate debuginfos, use: debuginfo-install
>> cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64 glibc-2.12-1.107.el6_4.2.x86_64
>> nss-softokn-freebl-3.12.9-11.el6.x86_64 pcre-7.8-6.el6.x86_64
>> zlib-1.2.3-29.el6.
>> x86_64
>> (gdb) where
>> #0  0x0000003baa8480ac in vfprintf () from /lib64/libc.so.6
>> #1  0x0000003baa86f9d2 in vsnprintf () from /lib64/libc.so.6
>> #2  0x000000000043f21a in ArgusDebug (d=2, fmt=0x4a9c50
>> "ArgusParseResourceFile: ArgusMinSsf \"%s\" \n") at ./argus_util.c:18844
>> #3  0x0000000000412f4a in ArgusParseResourceFile (parser=0x7ffff78f1010,
>> file=0x7fffffffe945 "/etc/ra.conf") at ./argus_util.c:1922
>> #4  0x000000000040fa64 in ArgusParseArgs (parser=0x7ffff78f1010, argc=7,
>> argv=0x7fffffffe6e8) at ./argus_util.c:968
>> #5  0x000000000040ef12 in ArgusMainInit (parser=0x7ffff78f1010, argc=7,
>> argv=0x7fffffffe6e8) at ./argus_util.c:782
>> #6  0x00000000004062d6 in main (argc=7, argv=0x7fffffffe6e8) at
>> ./argus_main.c:189
>> (gdb) up
>> #1  0x0000003baa86f9d2 in vsnprintf () from /lib64/libc.so.6
>> (gdb) up
>> #2  0x000000000043f21a in ArgusDebug (d=2, fmt=0x4a9c50
>> "ArgusParseResourceFile: ArgusMinSsf \"%s\" \n") at ./argus_util.c:18844
>> 18844         (void) vsnprintf (ptr, (MAXSTRLEN - strlen(buf)), fmt, ap);
>>
>> (gdb) backtrace full
>> #0  0x0000003baa8480ac in vfprintf () from /lib64/libc.so.6
>> No symbol table info available.
>> #1  0x0000003baa86f9d2 in vsnprintf () from /lib64/libc.so.6
>> No symbol table info available.
>> #2  0x000000000043f21a in ArgusDebug (d=2, fmt=0x4a9c50
>> "ArgusParseResourceFile: ArgusMinSsf \"%s\" \n") at ./argus_util.c:18844
>>         ap = {{gp_offset = 24, fp_offset = 48, overflow_arg_area =
>> 0x7fffffffc8b0, reg_save_area = 0x7fffffffc7e0}}
>>         buf = "ra[8798.006799f7ff7f0000]: 22:01:05.944695
>> ArgusParseResourceFile: ArgusMinSsf \"", '\000' <repeats 4015 times>
>>         ptr = 0x7fffffffb7db "ArgusParseResourceFile: ArgusMinSsf \""
>>         tvp = {tv_sec = 1374026465, tv_usec = 944695}
>> #3  0x0000000000412f4a in ArgusParseResourceFile (parser=0x7ffff78f1010,
>> file=0x7fffffffe945 "/etc/ra.conf") at ./argus_util.c:1922
>>         retn = 1
>>         i = 33
>>         len = 11
>>         Soption = 0
>>         roption = 0
>>         found = 0
>>         lines = 99
>>         strbuf = "RA_MIN_SSF=40\000\000es.  Set these variable to control
>> this policy.\n\000\000 TCP\n\000ss.\n", '\000' <repeats 621 times>"\344,
>> \222@\252;", '\000' <repeats 11 times>,
>> "`\315\377\377\377\177\000\000\000\000\000\000\000\000\000\000`\315\377\377\377\177\000\000\003\000\000\000\000\000\000\000\360\227\271\000\000\000\000\000(\b\265M\000\000\000\000\267\233@\252;",
>> '\000' <repeats 11 times>, "
>> \324\066\001\000\000\000\000(\000\000\000\000\000\000\000\260\064n\367\377\177\000\000\000\000\000\000\000\000\000\000\246\222@
>> \252;\000\000\000\210\065n\367\377\177\000\000\320\315\377\377\377\177\000\000t\277\000\000\000\000\000\000\320\315\377\377\377\177\000\000\016\000\000\000\000\000\000\000\230"...
>>         str = 0x7fffffffc9f0 "RA_MIN_SSF=40"
>>         optarg = 0x7fffffffc9fb "40"
>>         ptr = 0x0
>>         fd = 0xb9b630
>> #4  0x000000000040fa64 in ArgusParseArgs (parser=0x7ffff78f1010, argc=7,
>> argv=0x7fffffffe6e8) at ./argus_util.c:968
>>         op = 70
>>         retn = 0
>>         rcmdline = 0
>>         Scmdline = 1
>>         cmdbuf = 0x0
>>         str = 0x0
>>         getoptStr = 0x4a94b0
>> "a:AbB:c:C:dD:E:e:f:F:GhHiJlL:m:M:nN:Op:P:qQ:r:R:S:s:t:T:uU:Vvw:XzZ:%"
>>         host = 0x0
>>         filter = 0x0
>>         tmparg = 0x0
>> #5  0x000000000040ef12 in ArgusMainInit (parser=0x7ffff78f1010, argc=7,
>> argv=0x7fffffffe6e8) at ./argus_util.c:782
>>         i = 2
>>         cc = 31
>>         noconf = 0
>>         tsec = 1374026465
>>         envstr = 0x4a7c9e "ARGUSHOME"
>>         statbuf = {st_dev = 64768, st_ino = 1180809, st_nlink = 1,
>> st_mode = 33060, st_uid = 0, st_gid = 0, __pad0 = 0, st_rdev = 0, st_size =
>> 17018, st_blksize = 4096, st_blocks = 40, st_atim = {
>>             tv_sec = 1374024667, tv_nsec = 483227405}, st_mtim = {tv_sec
>> = 1374024666, tv_nsec = 44209814}, st_ctim = {tv_sec = 1374024666, tv_nsec
>> = 75210193}, __unused = {0, 0, 0}}
>>         tz = {tz_minuteswest = 240, tz_dsttime = 0}
>>         path = "/root/.rarc", '\000' <repeats 8180 times>
>> #6  0x00000000004062d6 in main (argc=7, argv=0x7fffffffe6e8) at
>> ./argus_main.c:189
>>         addr = 0x4a5b90
>>         ArgusExitStatus = 0
>>         i = 7
>>         cc = 46
>>         hosts = 0
>>         attr = {__size =
>> "[\000\000\000\002\000\000\000`\000\000\000\000\000\000\000\000\020",
>> '\000' <repeats 37 times>, __align = 8589934683}
>>         thread_policy = 0
>>         thread_param = {__sched_priority = 91}
>>         rr_min_priority = 1
>>         rr_max_priority = 99
>>         status = 0
>>         stacksize = 10485760
>>
>> Cheers,
>>
>> Jesse
>>
>> --
>> Jesse Bowling
>>
>>
>
>
> --
> Jesse Bowling
>
>


-- 
Jesse Bowling
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist1.pair.net/pipermail/argus/attachments/20130716/e59cf678/attachment.html>


More information about the argus mailing list