Fix a Bus-error condition for and ARM-based mobile
authorSven-Ola Tuecke <sven-ola@gmx.de>
Fri, 21 Aug 2009 16:39:25 +0000 (18:39 +0200)
committerSven-Ola Tuecke <sven-ola@gmx.de>
Fri, 21 Aug 2009 16:39:25 +0000 (18:39 +0200)
src/hna_set.c
src/link_set.c
src/mid_set.c
src/parser.c
src/tc_set.c

index 961126a..bf9dbd7 100644 (file)
@@ -342,7 +342,7 @@ void
 generate_hna(void *p __attribute__ ((unused))) {
   struct interface *ifp;
   struct ip_prefix_entry *h;
-  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
+  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE] __attribute__ ((aligned));
   uint8_t *curr = msg_buffer;
   uint8_t *length_field, *last;
   bool sendHNA = false;
index bb4dcea..40bcbc0 100644 (file)
@@ -820,7 +820,7 @@ olsr_update_packet_loss(struct link_entry *entry)
 void
 generate_hello(void *p) {
   struct interface *ifp = p;
-  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
+  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE] __attribute__ ((aligned));
   uint8_t *curr = msg_buffer;
   uint8_t *length_field, *last;
   struct link_entry *link;
index 0476f90..bf1fb3b 100644 (file)
@@ -532,7 +532,7 @@ olsr_input_mid(union olsr_message *msg, struct interface *input_if __attribute__
 void
 generate_mid(void *p  __attribute__ ((unused))) {
   struct interface *ifp, *allif;
-  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
+  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE] __attribute__ ((aligned));
   uint8_t *curr = msg_buffer;
   uint8_t *length_field, *last;
   bool sendMID = false;
index 7677cad..71d80b7 100644 (file)
@@ -332,7 +332,7 @@ olsr_input(int fd, void *data __attribute__ ((unused)), unsigned int flags __att
     struct sockaddr_storage from;
     socklen_t fromlen;
     int cc;
-    char inbuf[MAXMESSAGESIZE + 1];
+    char inbuf[MAXMESSAGESIZE] __attribute__ ((aligned));
 
     if (32 < ++cpu_overload_exit) {
       OLSR_WARN(LOG_PACKET_PARSING, "CPU overload detected, ending olsr_input() loop\n");
@@ -414,7 +414,7 @@ olsr_input_hostemu(int fd, void *data __attribute__ ((unused)), unsigned int fla
   uint16_t pcklen;
   struct preprocessor_function_entry *entry;
   char *packet;
-  char inbuf[MAXMESSAGESIZE + 1];
+  char inbuf[MAXMESSAGESIZE] __attribute__ ((aligned));
 #ifndef REMOVE_LOG_WARN
   struct ipaddr_str buf;
 #endif
index 8cab0dc..3a21225 100644 (file)
@@ -1003,7 +1003,7 @@ olsr_output_lq_tc_internal(void *ctx  __attribute__ ((unused)), union olsr_ip_ad
   struct interface *ifp;
   struct nbr_entry *nbr;
   struct link_entry *link;
-  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE];
+  uint8_t msg_buffer[MAXMESSAGESIZE - OLSR_HEADERSIZE] __attribute__ ((aligned));
   uint8_t *curr = msg_buffer;
   uint8_t *length_field, *border_flags, *seqno, *last;
   bool sendTC = false, nextFragment = false;