Re: [Nagios-devel] Segmentation fault when nebmodule returns with

Support forum for Nagios Core, Nagios Plugins, NCPA, NRPE, NSCA, NDOUtils and more. Engage with the community of users including those using the open source solutions.
Locked
Guest

Re: [Nagios-devel] Segmentation fault when nebmodule returns with

Post by Guest »

------=_Part_9420_24666062.1196147541525
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi list,

found the problem, at least I think to have found the problem.
Actually function neb_set_module_info does not operate on the
nebmodule struct but on the mod_handle it got from its caller. The
latter is from type lt_dlhandle. To set an info of type
NEBMODULE_MODINFO_* does not make sense.
Two problems arose by this and I fall into both. Writing informations
to the module by neb_set_module_info works for some of the
NEBMODULE_MODINFO_*. Some other lead to a segfault. The second problem
is, if you have overwritten the NEBMODULE_MODINFO_TITLE you overwrite
the filename of the lt_dlhandle and the module can't be unloaded
anymore.

I have written a patch. Since I am not a very experienced C programmer
please review it carefully before applying to official Nagios code.



--- nagios-3.0b7/base/nebmods.c 2007-10-22 15:39:30.000000000 +0200
+++ nagios-3.0b7-mod/base/nebmods.c 2007-11-27 07:35:52.000000000 +0100
@@ -338,24 +338,29 @@
/****************************************************************************/

/* sets module information */
-int neb_set_module_info(void *handle, int type, char *data){
- nebmodule *mod=NULL;
+int neb_set_module_info(void *mod_handle, int type, char *data){
+ nebmodule *temp_module = NULL;

- if(handle==NULL)
+ if(mod_handle==NULL)
return NEBERROR_NOMODULE;

/* check type */
if(type=NEBMODULE_MODINFO_NUMITEMS)
return NEBERROR_MODINFOBOUNDS;

- /* get the module */
- mod=(nebmodule *)handle;
+ /* find corresponding nebmodule */
+ for(temp_module=neb_module_list;temp_module;temp_module=temp_module->next){
+ if((void *)temp_module->module_handle == (void *)mod_handle)
+ break;
+ }
+ if(temp_module==NULL)
+ return NEBERROR_BADMODULEHANDLE;

/* free any previously allocated memory */
- my_free(mod->info[type]);
+ my_free(temp_module->info[type]);

/* allocate memory for the new data */
- if((mod->info[type]=(char *)strdup(data))==NULL)
+ if((temp_module->info[type]=(char *)strdup(data))==NULL)
return NEBERROR_NOMEM;

return OK;


Thanks.

Tobias

------=_Part_9420_24666062.1196147541525
Content-Type: text/x-patch; name=nebmods.c.patch
Content-Transfer-Encoding: base64
X-Attachment-Id: f_f9i37fjl
Content-Disposition: attachment; filename=nebmods.c.patch

LS0tIG5hZ2lvcy0zLjBiNy9iYXNlL25lYm1vZHMuYwkyMDA3LTEwLTIyIDE1OjM5OjMwLjAwMDAw
MDAwMCArMDIwMAorKysgbmFnaW9zLTMuMGI3LW1vZC9iYXNlL25lYm1vZHMuYwkyMDA3LTExLTI3
IDA3OjM1OjUyLjAwMDAwMDAwMCArMDEwMApAQCAtMzM4LDI0ICszMzgsMjkgQEAKIC8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLwogCiAvKiBzZXRzIG1vZHVsZSBpbmZvcm1hdGlvbiAqLwotaW50IG5lYl9z
ZXRfbW9kdWxlX2luZm8odm9pZCAqaGFuZGxlLCBpbnQgdHlwZSwgY2hhciAqZGF0YSl7Ci0JbmVi
bW9kdWxlICptb2Q9TlVMTDsKK2ludCBuZWJfc2V0X21vZHVsZV9pbmZvKHZvaWQgKm1vZF9oYW5k
bGUsIGludCB0eXBlLCBjaGFyICpkYXRhKXsKKwluZWJtb2R1bGUgKnRlbXBfbW9kdWxlID0gTlVM
TDsKIAotCWlmKGhhbmRsZT09TlVMTCkKKwlpZihtb2RfaGFuZGxlPT1OVUxMKQogCQlyZXR1cm4g
TkVCRVJST1JfTk9NT0RVTEU7CiAKIAkvKiBjaGVjayB0eXBlICovCiAJaWYodHlwZTwwIHx8IHR5
cGU+PU5FQk1PRFVMRV9NT0RJTkZPX05VTUlURU1TKQogCQlyZXR1cm4gTkVCRVJST1JfTU9ESU5G
T0JPVU5EUzsKIAotCS8qIGdldCB0aGUgbW9kdWxlICovCi0JbW9kPShuZWJtb2R1bGUgKiloYW5k
bGU7CisJLyogZmluZCBjb3JyZXNwb25kaW5nIG5lYm1vZHVsZSAqLworCWZvcih0ZW1wX21vZHVs
ZT1uZWJfbW9kdWxlX2xpc3Q7dGVtcF9tb2R1bGU7dGVtcF9tb2R1bGU9dGVtcF9tb2R1bGUtPm5l
eHQpeworCQlpZigodm9pZCAqKXRlbXBfbW9kdWxlLT5tb2R1bGVfaGFuZGxlID09ICh2b2lkICop
bW9kX2hhbmRsZSkKKwkJCWJyZWFrOworCX0KKwlpZih0ZW1wX21vZHVsZT09TlVMTCkKKwkJcmV0
dXJuIE5FQkVSUk9SX0JBRE1PRFVMRUhBTkRMRTsKIAogCS8qIGZyZWUgYW55IHByZXZpb3VzbHkg
YWxsb2NhdGVkIG1lbW9yeSAqLwotCW15X2ZyZWUobW9kLT5pbmZvW3R5cGVdKTsKKwlteV9mcmVl
KHRlbXBfbW9kdWxlLT5pbmZvW3R5cGVdKTsKIAogCS8qIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhl
IG5ldyBkYXRhICovCi0JaWYoKG1vZC0+aW5mb1t0eXBlXT0oY2hhciAqKXN0cmR1cChkYXRhKSk9
PU5VTEwpCisJaWYoKHRlbXBfbW9kdWxlLT5pbmZvW3R5c

...[email truncated]...


This post was automatically imported from historical nagios-devel mailing list archives
Original poster: [email protected]
Locked