[AGENT++] Memory corruptions with MibComplexEntry subclass get_next_request
Reetesh Ranjan
reeteshr at gmail.com
Wed Aug 18 16:23:04 CEST 2010
I have done a simple derivation MibComplexEntry and following is the
derived get_next_request function (as per suggestion by Frank in
another thread from me).
void SDCFsMibHandler::get_next_request(Request * request, int ind)
{
uint8 lResponse[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
Vbx vb(request->get_oid(ind));
vb.set_value(lResponse, sizeof lResponse);
request->finish(ind, vb);
}
This code is leading to memory corruption. Dmalloc finds an error 67
after function exits (but I am not sure whether because of local vars
destructed or somewhere later in the flow). When I replace the local
variable vb with an allocated one, then similar error comes for heap.
I am trying to do a simple operation of providing a value in the
get-next response.
Here are the class definition and all methods implemented/derived:
class SDCFsMibHandler : public MibComplexEntry
{
public:
// constructor
SDCFsMibHandler();
// destructor
virtual
~SDCFsMibHandler() { }
// Needed to implement pure virtual functions (but are dummy)
virtual MibEntry * clone() { return NULL; }
virtual OidxPtr max_key(void) { return NULL; }
virtual void get_request(Request *, int) { /* no-op */ }
virtual int prepare_set_request(Request*, int&) { return SNMP_ERROR_SUCCESS; }
virtual int undo_set_request(Request*, int&) { return SNMP_ERROR_SUCCESS; }
virtual void cleanup_set_request(Request*, int&) { }
// Important derived functions
virtual void
get_next_request(Request*, int);
virtual Oidx find_succ(const Oidx & a, Request * req=NULL);
virtual int commit_set_request(Request*, int);
}
SDCFsMibHandler::SDCFsMibHandler()
: MibComplexEntry("1.3.1.4.1.108.1.200.1", READWRITE)
{ }
Oidx SDCFsMibHandler::find_succ(const Oidx & a, Request * req)
{
Oidx l = a.next_peer();
return(l);
}
My snmp processing code is lifted from the examples. Could you please
help me with any information on this?
Thanks,
Reetesh
More information about the AGENTPP
mailing list