Re: [Qemu-devel] [PATCH] slirp: Remove some type casts caused by bad declaration of x.tp_buf

2011-02-25 Thread Blue Swirl
Thanks, applied.

On Wed, Feb 23, 2011 at 8:40 PM, Stefan Weil w...@mail.berlios.de wrote:
 x.tp_buf was declared as a uint8_t array, but always used as
 a char array (which needed a lot of type casts).

 The patch includes these changes:

 * Fix declaration of x.tp_buf and remove all type casts.

 * Use offsetof() to get the offset of x.tp_buf.

 Signed-off-by: Stefan Weil w...@mail.berlios.de
 ---
  slirp/tftp.c |   14 +++---
  slirp/tftp.h |    2 +-
  2 files changed, 8 insertions(+), 8 deletions(-)

 diff --git a/slirp/tftp.c b/slirp/tftp.c
 index 1821648..8055ccc 100644
 --- a/slirp/tftp.c
 +++ b/slirp/tftp.c
 @@ -136,9 +136,9 @@ static int tftp_send_oack(struct tftp_session *spt,
     m-m_data += sizeof(struct udpiphdr);

     tp-tp_op = htons(TFTP_OACK);
 -    n += snprintf((char *)tp-x.tp_buf + n, sizeof(tp-x.tp_buf) - n, %s,
 +    n += snprintf(tp-x.tp_buf + n, sizeof(tp-x.tp_buf) - n, %s,
                   key) + 1;
 -    n += snprintf((char *)tp-x.tp_buf + n, sizeof(tp-x.tp_buf) - n, %u,
 +    n += snprintf(tp-x.tp_buf + n, sizeof(tp-x.tp_buf) - n, %u,
                   value) + 1;

     saddr.sin_addr = recv_tp-ip.ip_dst;
 @@ -283,7 +283,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
 *tp, int pktlen)

   /* skip header fields */
   k = 0;
 -  pktlen -= ((uint8_t *)tp-x.tp_buf[0] - (uint8_t *)tp);
 +  pktlen -= offsetof(struct tftp_t, x.tp_buf);

   /* prepend tftp_prefix */
   prefix_len = strlen(slirp-tftp_prefix);
 @@ -299,7 +299,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
 *tp, int pktlen)
       tftp_send_error(spt, 2, Access violation, tp);
       return;
     }
 -    req_fname[k] = (char)tp-x.tp_buf[k];
 +    req_fname[k] = tp-x.tp_buf[k];
     if (req_fname[k++] == '\0') {
       break;
     }
 @@ -311,7 +311,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
 *tp, int pktlen)
     return;
   }

 -  if (strcasecmp((const char *)tp-x.tp_buf[k], octet) != 0) {
 +  if (strcasecmp(tp-x.tp_buf[k], octet) != 0) {
       tftp_send_error(spt, 4, Unsupported transfer mode, tp);
       return;
   }
 @@ -340,7 +340,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
 *tp, int pktlen)
   while (k  pktlen) {
       const char *key, *value;

 -      key = (const char *)tp-x.tp_buf[k];
 +      key = tp-x.tp_buf[k];
       k += strlen(key) + 1;

       if (k = pktlen) {
 @@ -348,7 +348,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
 *tp, int pktlen)
          return;
       }

 -      value = (const char *)tp-x.tp_buf[k];
 +      value = tp-x.tp_buf[k];
       k += strlen(value) + 1;

       if (strcasecmp(key, tsize) == 0) {
 diff --git a/slirp/tftp.h b/slirp/tftp.h
 index b9f0847..72e5e91 100644
 --- a/slirp/tftp.h
 +++ b/slirp/tftp.h
 @@ -26,7 +26,7 @@ struct tftp_t {
       uint16_t tp_error_code;
       uint8_t tp_msg[512];
     } tp_error;
 -    uint8_t tp_buf[512 + 2];
 +    char tp_buf[512 + 2];
   } x;
  };

 --
 1.7.2.3






[Qemu-devel] [PATCH] slirp: Remove some type casts caused by bad declaration of x.tp_buf

2011-02-23 Thread Stefan Weil
x.tp_buf was declared as a uint8_t array, but always used as
a char array (which needed a lot of type casts).

The patch includes these changes:

* Fix declaration of x.tp_buf and remove all type casts.

* Use offsetof() to get the offset of x.tp_buf.

Signed-off-by: Stefan Weil w...@mail.berlios.de
---
 slirp/tftp.c |   14 +++---
 slirp/tftp.h |2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/slirp/tftp.c b/slirp/tftp.c
index 1821648..8055ccc 100644
--- a/slirp/tftp.c
+++ b/slirp/tftp.c
@@ -136,9 +136,9 @@ static int tftp_send_oack(struct tftp_session *spt,
 m-m_data += sizeof(struct udpiphdr);
 
 tp-tp_op = htons(TFTP_OACK);
-n += snprintf((char *)tp-x.tp_buf + n, sizeof(tp-x.tp_buf) - n, %s,
+n += snprintf(tp-x.tp_buf + n, sizeof(tp-x.tp_buf) - n, %s,
   key) + 1;
-n += snprintf((char *)tp-x.tp_buf + n, sizeof(tp-x.tp_buf) - n, %u,
+n += snprintf(tp-x.tp_buf + n, sizeof(tp-x.tp_buf) - n, %u,
   value) + 1;
 
 saddr.sin_addr = recv_tp-ip.ip_dst;
@@ -283,7 +283,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
*tp, int pktlen)
 
   /* skip header fields */
   k = 0;
-  pktlen -= ((uint8_t *)tp-x.tp_buf[0] - (uint8_t *)tp);
+  pktlen -= offsetof(struct tftp_t, x.tp_buf);
 
   /* prepend tftp_prefix */
   prefix_len = strlen(slirp-tftp_prefix);
@@ -299,7 +299,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
*tp, int pktlen)
   tftp_send_error(spt, 2, Access violation, tp);
   return;
 }
-req_fname[k] = (char)tp-x.tp_buf[k];
+req_fname[k] = tp-x.tp_buf[k];
 if (req_fname[k++] == '\0') {
   break;
 }
@@ -311,7 +311,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
*tp, int pktlen)
 return;
   }
 
-  if (strcasecmp((const char *)tp-x.tp_buf[k], octet) != 0) {
+  if (strcasecmp(tp-x.tp_buf[k], octet) != 0) {
   tftp_send_error(spt, 4, Unsupported transfer mode, tp);
   return;
   }
@@ -340,7 +340,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
*tp, int pktlen)
   while (k  pktlen) {
   const char *key, *value;
 
-  key = (const char *)tp-x.tp_buf[k];
+  key = tp-x.tp_buf[k];
   k += strlen(key) + 1;
 
   if (k = pktlen) {
@@ -348,7 +348,7 @@ static void tftp_handle_rrq(Slirp *slirp, struct tftp_t 
*tp, int pktlen)
  return;
   }
 
-  value = (const char *)tp-x.tp_buf[k];
+  value = tp-x.tp_buf[k];
   k += strlen(value) + 1;
 
   if (strcasecmp(key, tsize) == 0) {
diff --git a/slirp/tftp.h b/slirp/tftp.h
index b9f0847..72e5e91 100644
--- a/slirp/tftp.h
+++ b/slirp/tftp.h
@@ -26,7 +26,7 @@ struct tftp_t {
   uint16_t tp_error_code;
   uint8_t tp_msg[512];
 } tp_error;
-uint8_t tp_buf[512 + 2];
+char tp_buf[512 + 2];
   } x;
 };
 
-- 
1.7.2.3