Fix compiler warnings on iOS
diff --git a/ChangeLog b/ChangeLog
index 39a039a..30b9846 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,7 @@
    * ssl_close_notify() could send more than one message in some circumstances
      with non-blocking I/O.
    * x509_crt_parse() did not increase total_failed on PEM error
+   * Fix compiler warnings on iOS (found by Sander Niemeijer).
 
 Changes
    * X.509 certificates with more than one AttributeTypeAndValue per
diff --git a/include/polarssl/bn_mul.h b/include/polarssl/bn_mul.h
index 6ce6abc..7cab471 100644
--- a/include/polarssl/bn_mul.h
+++ b/include/polarssl/bn_mul.h
@@ -833,8 +833,8 @@
 
 #define MULADDC_CORE                    \
     r   = *(s++) * (t_udbl) b;          \
-    r0  = r;                            \
-    r1  = r >> biL;                     \
+    r0  = (t_uint) r;                   \
+    r1  = (t_uint) r >> biL;            \
     r0 += c;  r1 += (r0 <  c);          \
     r0 += *d; r1 += (r0 < *d);          \
     c = r1; *(d++) = r0;
diff --git a/library/net.c b/library/net.c
index 2ef1c3c..899cf37 100644
--- a/library/net.c
+++ b/library/net.c
@@ -325,7 +325,12 @@
 {
     struct timeval tv;
     tv.tv_sec  = 0;
+#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) || \
+    (defined(__APPLE__) && defined(__MACH__)))
+    tv.tv_usec = (suseconds_t) usec;
+#else
     tv.tv_usec = usec;
+#endif
     select( 0, NULL, NULL, NULL, &tv );
 }
 
@@ -335,7 +340,7 @@
 int net_recv( void *ctx, unsigned char *buf, size_t len )
 {
     int fd = *((int *) ctx);
-    int ret = read( fd, buf, len );
+    int ret = (int) read( fd, buf, len );
 
     if( ret < 0 )
     {
@@ -365,7 +370,7 @@
 int net_send( void *ctx, const unsigned char *buf, size_t len )
 {
     int fd = *((int *) ctx);
-    int ret = write( fd, buf, len );
+    int ret = (int) write( fd, buf, len );
 
     if( ret < 0 )
     {