The availability of socketbits.h?
Giorgos Keramidas
keramida at ceid.upatras.gr
Tue May 17 19:39:00 PDT 2005
On 2005-05-18 10:02, Xu Qiang <Qiang.Xu at fujixerox.com> wrote:
> Thank you again. It can roll forward when the declaration of the
> "random" function function is removed. It seems 1.1.16 version is full
> of bugs, like stated above. The 1.1.14 version is much better in
> compiling.
>
> However, both versions give me an error when I run the compiled
> application after gmake, gmake install. I go to bin directory and type
> "./nngssrv", it told me: Bus error (core dumped)
>
> GDB trace is here:
> -----------------------------------------------
> gso_dev_2# gdb nngssrv nngssrv.core
> (gdb) bt
> [...]
> #0 0x2818bbc5 in __vfprintf () from /lib/libc.so.5
> #1 0x2818a513 in vfprintf () from /lib/libc.so.5
> #2 0x28177352 in fprintf () from /lib/libc.so.5
> #3 0x0805f98c in commands_init () at command.c:1149
> #4 0x0805aeab in main (argc=1116382465, argv=0x807e702) at nngsmain.c:162
> -----------------------------------------------
>
> What is a "Bus error"?
A bug in the program. The relevant code seems to be this part of
nngs-1.1.14/nrat/command.c:
1131 void commands_init()
1132 {
1133 FILE *fp, *afp;
1134 int i = 0;
1135
1136 fp = xyfopen(FILENAME_CMDS, "w");
1137 if (!fp) {
1138 return;
1139 }
1140 afp = xyfopen(FILENAME_ACMDS, "w");
1141 if (!afp) {
1142 fclose(fp);
1143 return;
1144 }
1145 for (i = 0; command_list[i].comm_name; i++) {
1146 if (command_list[i].adminLevel >= ADMIN_ADMIN) {
1147 fprintf(afp, "%s\n", command_list[i].comm_name);
1148 } else {
1149 fprintf(fp, "%s\n", command_list[i].comm_name);
1150 }
1151 }
1152 fclose(fp);
1153 fclose(afp);
1154 }
If we put for a while the horrible style aside, the bug seems to be that
the for loop doesn't properly check the bounds of the command_list[]
array. This would probably be ok if the command_list array was declared
to have a trailing element set to an "all zeroes" value:
struct command_type command_list[] = {
{"accept", "n", com_accept, ADMIN_USER },
{"actitle", "dS", com_actitle, ADMIN_ADMIN },
{0, 0, 0, 0 },
};
but it's not (look in nngs-1.1.14/nrat/command_list.h):
/* Name Options Functions Security */
struct command_type command_list[] = {
{"accept", "n", com_accept, ADMIN_USER },
{"actitle", "dS", com_actitle, ADMIN_ADMIN },
[...]
/* by Syncanph */
{"shownote", "", com_shownote, ADMIN_USER },
};
and this is *EXACTLY* where this particular bug lies.
> Any hints to overcome this last barrier?
Yes. Don't run software that is full of bugs, unless you're keen on
fixing those bugs :-(
The nngs.sourceforge.net web page shows *no* release of nngs after 2002.
The history of that project shows that the ones developing it would
release very often; some times twice within the same week. The fact
that there has been absolutely no release for more than 3 years means
that nngs is, for all purposes, thoroughly dead.
- Giorgos
More information about the freebsd-questions
mailing list