return CORBA_TRUE;
}
+CORBA_boolean CDR_put_align(CDR_Codec *codec, unsigned bsize)
+{
+ unsigned long forward,i;
+
+ forward = (unsigned long)ALIGN_ADDRESS(codec->wptr, bsize);
+ if (forward+bsize > codec->wptr_max) {
+ return CORBA_FALSE;
+ }
+
+ i = codec->wptr;
+ while(forward > i)
+ codec->buffer[i++] = '\0';
+
+ codec->wptr = forward;
+ return CORBA_TRUE;
+}
+
+CORBA_boolean CDR_get_align(CDR_Codec *codec, unsigned bsize)
+{
+ codec->rptr = (unsigned long)ALIGN_ADDRESS(codec->rptr, bsize);
+ return codec->rptr <= codec->wptr_max;
+}
+
#define CDR_swap2(d,s) forb_byteswap((d), (s), 2)
#define CDR_swap4(d,s) forb_byteswap((d), (s), 4)
#define CDR_swap8(d,s) forb_byteswap((d), (s), 8)
extern CORBA_boolean CDR_get_float(CDR_Codec *codec, CORBA_float *f);
extern CORBA_boolean CDR_get_double(CDR_Codec *codec, CORBA_double *d);
+extern CORBA_boolean CDR_put_align(CDR_Codec *codec, unsigned bsize);
+extern CORBA_boolean CDR_get_align(CDR_Codec *codec, unsigned bsize);
+
/* serialization functions */
#define CORBA_short_serialize(x,y) CDR_put_short((x),*(y))
rh.method_index = method_ind;
rh.source = forb_object_to_forb(req->obj)->server_id;
ret = forb_iop_request_header_serialize(&req->cdr_request, &rh);
+ if (ret) {
+ /* Request body is 8 byte aligned */
+ ret = CDR_put_align(&req->cdr_request, 8);
+ }
return ret;
}
env.major = FORB_EX_COMM_FAILURE;
goto out;
}
+ ret = CDR_get_align(codec, 8);
+ if (!ret) {
+ ul_logerr("Malformed request recevied\n");
+ env.major = FORB_EX_COMM_FAILURE;
+ goto out;
+ }
+
header_size = data_size - CDR_data_size(codec);
req_size = message_size - header_size;