summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2007-01-19 12:22:30 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:43:49 -0500
commit87f5bed98ad4e40c12095492677b8c5433217aa2 (patch)
tree7e82145b3a30b15d5bf1d07809b40d07e739c405
parent4c719f82c2fe69710cf30b3c71d3281ca1d79a62 (diff)
downloadsamba-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)
-rw-r--r--source4/cluster/ctdb/common/ctdb_call.c16
-rw-r--r--source4/cluster/ctdb/include/ctdb_private.h10
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 */