diff options
author | Stefan Metzmacher <metze@samba.org> | 2007-01-19 12:22:30 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:43:49 -0500 |
commit | 87f5bed98ad4e40c12095492677b8c5433217aa2 (patch) | |
tree | 7e82145b3a30b15d5bf1d07809b40d07e739c405 /source4 | |
parent | 4c719f82c2fe69710cf30b3c71d3281ca1d79a62 (diff) | |
download | samba-87f5bed98ad4e40c12095492677b8c5433217aa2.tar.gz samba-87f5bed98ad4e40c12095492677b8c5433217aa2.tar.bz2 samba-87f5bed98ad4e40c12095492677b8c5433217aa2.zip |
r20901: - not all compiler like uint8_t data[0] elements!
- this fix looks really ugly but I don't know a better solution...
if we would use uint8_t *data; then we would send the pointer value
also in the network packet and we would need to initialize
s->data = ((void *)(&s->data) + 1;
to make the memcpy statements work as they're currently,
so we use uint8_t data[1] in the struct definition ...
tridge: please review careful!
hopefully fix the build on solaris and HPUX
metze
(This used to be commit 015097677c8a65e9f5a4367f4f89193a4b2de76b)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/cluster/ctdb/common/ctdb_call.c | 16 | ||||
-rw-r--r-- | source4/cluster/ctdb/include/ctdb_private.h | 10 |
2 files changed, 13 insertions, 13 deletions
diff --git a/source4/cluster/ctdb/common/ctdb_call.c b/source4/cluster/ctdb/common/ctdb_call.c index 2c11354ed5..24924de902 100644 --- a/source4/cluster/ctdb/common/ctdb_call.c +++ b/source4/cluster/ctdb/common/ctdb_call.c @@ -135,9 +135,9 @@ static void ctdb_send_error(struct ctdb_context *ctdb, va_end(ap); len = strlen(msg)+1; - r = ctdb->methods->allocate_pkt(ctdb, sizeof(*r) + len); + r = ctdb->methods->allocate_pkt(ctdb, sizeof(*r) - 1 + len); CTDB_NO_MEMORY_FATAL(ctdb, r); - r->hdr.length = sizeof(*r) + len; + r->hdr.length = sizeof(*r) - 1 + len; r->hdr.operation = CTDB_REPLY_ERROR; r->hdr.destnode = hdr->srcnode; r->hdr.srcnode = ctdb->vnn; @@ -192,7 +192,7 @@ static void ctdb_call_send_dmaster(struct ctdb_context *ctdb, struct ctdb_req_dmaster *r; int len; - len = sizeof(*r) + key->dsize + data->dsize; + len = sizeof(*r) - 1 + key->dsize + data->dsize; r = ctdb->methods->allocate_pkt(ctdb, len); CTDB_NO_MEMORY_FATAL(ctdb, r); r->hdr.length = len; @@ -281,9 +281,9 @@ void ctdb_request_dmaster(struct ctdb_context *ctdb, struct ctdb_req_header *hdr } /* send the CTDB_REPLY_DMASTER */ - r = ctdb->methods->allocate_pkt(ctdb, sizeof(*r) + data.dsize); + r = ctdb->methods->allocate_pkt(ctdb, sizeof(*r) - 1 + data.dsize); CTDB_NO_MEMORY_FATAL(ctdb, r); - r->hdr.length = sizeof(*r) + data.dsize; + r->hdr.length = sizeof(*r) - 1 + data.dsize; r->hdr.operation = CTDB_REPLY_DMASTER; r->hdr.destnode = c->dmaster; r->hdr.srcnode = ctdb->vnn; @@ -358,9 +358,9 @@ void ctdb_request_call(struct ctdb_context *ctdb, struct ctdb_req_header *hdr) call_data.dsize?&call_data:NULL, &reply_data, c->hdr.srcnode); - r = ctdb->methods->allocate_pkt(ctdb, sizeof(*r) + reply_data.dsize); + r = ctdb->methods->allocate_pkt(ctdb, sizeof(*r) - 1 + reply_data.dsize); CTDB_NO_MEMORY_FATAL(ctdb, r); - r->hdr.length = sizeof(*r) + reply_data.dsize; + r->hdr.length = sizeof(*r) - 1 + reply_data.dsize; r->hdr.operation = CTDB_REPLY_CALL; r->hdr.destnode = hdr->srcnode; r->hdr.srcnode = hdr->destnode; @@ -580,7 +580,7 @@ struct ctdb_call_state *ctdb_call_send(struct ctdb_context *ctdb, state = talloc_zero(ctdb, struct ctdb_call_state); CTDB_NO_MEMORY_NULL(ctdb, state); - len = sizeof(*state->c) + key.dsize + (call_data?call_data->dsize:0); + len = sizeof(*state->c) - 1 + key.dsize + (call_data?call_data->dsize:0); state->c = ctdb->methods->allocate_pkt(ctdb, len); CTDB_NO_MEMORY_NULL(ctdb, state->c); diff --git a/source4/cluster/ctdb/include/ctdb_private.h b/source4/cluster/ctdb/include/ctdb_private.h index 68e82fd605..bace97afe7 100644 --- a/source4/cluster/ctdb/include/ctdb_private.h +++ b/source4/cluster/ctdb/include/ctdb_private.h @@ -157,20 +157,20 @@ struct ctdb_req_call { uint32_t callid; uint32_t keylen; uint32_t calldatalen; - uint8_t data[0]; /* key[] followed by calldata[] */ + uint8_t data[1]; /* key[] followed by calldata[] */ }; struct ctdb_reply_call { struct ctdb_req_header hdr; uint32_t datalen; - uint8_t data[0]; + uint8_t data[1]; }; struct ctdb_reply_error { struct ctdb_req_header hdr; uint32_t status; uint32_t msglen; - uint8_t msg[0]; + uint8_t msg[1]; }; struct ctdb_reply_redirect { @@ -183,13 +183,13 @@ struct ctdb_req_dmaster { uint32_t dmaster; uint32_t keylen; uint32_t datalen; - uint8_t data[0]; + uint8_t data[1]; }; struct ctdb_reply_dmaster { struct ctdb_req_header hdr; uint32_t datalen; - uint8_t data[0]; + uint8_t data[1]; }; /* internal prototypes */ |