]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - fwp/lib/frsh_fwp/fwp_fna.c
Use endpoint attributes only if it has correct size
[frescor/fwp.git] / fwp / lib / frsh_fwp / fwp_fna.c
index 2cd477a909842751fa3a6262c27b5fdee886fdf2..1c9a7e8e868340b76b4ae029cc15d25354fb16ee 100644 (file)
@@ -84,10 +84,15 @@ int fwp_fna_send_endpoint_created(fna_endpoint_data_t  *endpoint)
        fwp_endpoint_attr_t *attr;
        fwp_endpoint_t *fwp_epoint;
        int rv;
-
+       frsh_send_endpoint_protocol_info_t *spi;
+       
        node = (unsigned int) endpoint->destination;
        port = (unsigned int) endpoint->stream_id;
-       attr = (fwp_endpoint_attr_t*) endpoint->endpoint_protocol_info.send.body; 
+       attr = NULL;
+       
+       spi = &endpoint->endpoint_protocol_info.send;
+       if (spi->size == sizeof(fwp_endpoint_attr_t))
+               attr = (fwp_endpoint_attr_t*)spi->body; 
        rv = fwp_send_endpoint_create(node, port, attr, &fwp_epoint);
        endpoint->protocol_info.body = fwp_epoint;
        return rv;
@@ -167,7 +172,7 @@ int fwp_fna_receive(const fna_endpoint_data_t *endpoint,
                        size_t *received_bytes, frsh_network_address_t *from)
 {
        unsigned int from_addr;
-       size_t len;
+       ssize_t len;
        fwp_endpoint_t *fwp_epoint;
        int flags = 0;
        
@@ -187,7 +192,7 @@ int fwp_fna_receive_sync(const fna_endpoint_data_t *endpoint, void *buffer,
                         frsh_network_address_t *from)
 {
        unsigned int from_addr;
-       size_t len;
+       ssize_t len;
        fwp_endpoint_t *fwp_epoint;
        int flags = 0;
        
@@ -209,7 +214,7 @@ int fwp_fna_receive_async(const fna_endpoint_data_t *endpoint, void *buffer,
                         frsh_network_address_t *from)
 {
        unsigned int from_addr;
-       size_t len;
+       ssize_t len;
        fwp_endpoint_t *fwp_epoint;
        int flags = 0;