repositories
/
deb_libnfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add an assert to track if we try to use an rpc_context after it has been destroyed
[deb_libnfs.git]
/
lib
/
pdu.c
diff --git
a/lib/pdu.c
b/lib/pdu.c
index 597b44cf8f8d119db53effa6e56a5cb8149ea46f..7dc1ee317c6dbefcdaa5845f78efac0561be020a 100644
(file)
--- a/
lib/pdu.c
+++ b/
lib/pdu.c
@@
-28,6
+28,7
@@
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
+#include <assert.h>
#include <errno.h>
#include "slist.h"
#include "libnfs-zdr.h"
#include <errno.h>
#include "slist.h"
#include "libnfs-zdr.h"
@@
-40,9
+41,7
@@
struct rpc_pdu *rpc_allocate_pdu(struct rpc_context *rpc, int program, int versi
struct rpc_pdu *pdu;
struct rpc_msg msg;
struct rpc_pdu *pdu;
struct rpc_msg msg;
- if (rpc == NULL) {
- return NULL;
- }
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
pdu = malloc(sizeof(struct rpc_pdu));
if (pdu == NULL) {
pdu = malloc(sizeof(struct rpc_pdu));
if (pdu == NULL) {
@@
-81,8
+80,10
@@
struct rpc_pdu *rpc_allocate_pdu(struct rpc_context *rpc, int program, int versi
return pdu;
}
return pdu;
}
-void rpc_free_pdu(struct rpc_context *rpc
_U_
, struct rpc_pdu *pdu)
+void rpc_free_pdu(struct rpc_context *rpc, struct rpc_pdu *pdu)
{
{
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
if (pdu->outdata.data != NULL) {
free(pdu->outdata.data);
pdu->outdata.data = NULL;
if (pdu->outdata.data != NULL) {
free(pdu->outdata.data);
pdu->outdata.data = NULL;
@@
-104,6
+105,8
@@
int rpc_queue_pdu(struct rpc_context *rpc, struct rpc_pdu *pdu)
{
int size, recordmarker;
{
int size, recordmarker;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
size = zdr_getpos(&pdu->zdr);
/* for udp we dont queue, we just send it straight away */
size = zdr_getpos(&pdu->zdr);
/* for udp we dont queue, we just send it straight away */
@@
-150,6
+153,8
@@
static int rpc_process_reply(struct rpc_context *rpc, struct rpc_pdu *pdu, ZDR *
{
struct rpc_msg msg;
{
struct rpc_msg msg;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
memset(&msg, 0, sizeof(struct rpc_msg));
msg.acpted_rply.ar_verf = _null_auth;
if (pdu->zdr_decode_bufsize > 0) {
memset(&msg, 0, sizeof(struct rpc_msg));
msg.acpted_rply.ar_verf = _null_auth;
if (pdu->zdr_decode_bufsize > 0) {
@@
-215,6
+220,8
@@
int rpc_process_pdu(struct rpc_context *rpc, char *buf, int size)
unsigned int xid;
char *reasbuf = NULL;
unsigned int xid;
char *reasbuf = NULL;
+ assert(rpc->magic == RPC_CONTEXT_MAGIC);
+
memset(&zdr, 0, sizeof(ZDR));
zdrmem_create(&zdr, buf, size, ZDR_DECODE);
memset(&zdr, 0, sizeof(ZDR));
zdrmem_create(&zdr, buf, size, ZDR_DECODE);