Fix ecp_tls_read_point's signature
diff --git a/include/polarssl/ecp.h b/include/polarssl/ecp.h
index ec9067d..8debda4 100644
--- a/include/polarssl/ecp.h
+++ b/include/polarssl/ecp.h
@@ -324,7 +324,7 @@
  *
  * \param grp       ECP group used
  * \param pt        Destination point
- * \param buf       Start of input buffer
+ * \param buf       $(Start of input buffer)
  * \param len       Buffer length
  *
  * \return          O if successful,
@@ -332,7 +332,7 @@
  *                  POLARSSL_ERR_ECP_BAD_INPUT_DATA if input is invalid
  */
 int ecp_tls_read_point( const ecp_group *grp, ecp_point *pt,
-                        const unsigned char *buf, size_t len );
+                        const unsigned char **buf, size_t len );
 
 /**
  * \brief           Export a point as a TLS ECPoint record
diff --git a/library/ecp.c b/library/ecp.c
index 68f20f7..a76ce70 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -271,9 +271,10 @@
  *      } ECPoint;
  */
 int ecp_tls_read_point( const ecp_group *grp, ecp_point *pt,
-                        const unsigned char *buf, size_t buf_len )
+                        const unsigned char **buf, size_t buf_len )
 {
     unsigned char data_len;
+    const unsigned char *buf_start;
 
     /*
      * We must have at least two bytes (1 for length, at least of for data)
@@ -281,11 +282,17 @@
     if( buf_len < 2 )
         return( POLARSSL_ERR_ECP_BAD_INPUT_DATA );
 
-    data_len = *buf++;
+    data_len = *(*buf)++;
     if( data_len < 1 || data_len > buf_len - 1 )
         return( POLARSSL_ERR_ECP_BAD_INPUT_DATA );
 
-    return ecp_point_read_binary( grp, pt, buf, data_len );
+    /*
+     * Save buffer start for read_binary and update buf
+     */
+    buf_start = *buf;
+    *buf += data_len;
+
+    return ecp_point_read_binary( grp, pt, buf_start, data_len );
 }
 
 /*
diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function
index 64e0147..a051bd7 100644
--- a/tests/suites/test_suite_ecp.function
+++ b/tests/suites/test_suite_ecp.function
@@ -301,6 +301,7 @@
     mpi X, Y, Z;
     size_t ilen;
     unsigned char buf[256];
+    const unsigned char *vbuf = buf;
 
     memset( buf, 0, sizeof( buf ) );
 
@@ -315,13 +316,14 @@
 
     ilen = unhexify( buf, {input} );
 
-    TEST_ASSERT( ecp_tls_read_point( &grp, &P, buf, ilen ) == {ret} );
+    TEST_ASSERT( ecp_tls_read_point( &grp, &P, &vbuf, ilen ) == {ret} );
 
     if( {ret} == 0 )
     {
         TEST_ASSERT( mpi_cmp_mpi( &P.X, &X ) == 0 );
         TEST_ASSERT( mpi_cmp_mpi( &P.Y, &Y ) == 0 );
         TEST_ASSERT( mpi_cmp_mpi( &P.Z, &Z ) == 0 );
+        TEST_ASSERT( *vbuf == 0x00 );
     }
 
     ecp_group_free( &grp ); ecp_point_free( &P );
@@ -335,37 +337,45 @@
     ecp_group grp;
     ecp_point pt;
     unsigned char buf[256];
+    const unsigned char *vbuf;
     size_t olen;
 
     ecp_group_init( &grp );
     ecp_point_init( &pt );
-    memset( buf, 0x00, sizeof( buf ) );
 
     TEST_ASSERT( ecp_use_known_dp( &grp, POLARSSL_ECP_DP_{id} ) == 0 );
 
+    memset( buf, 0x00, sizeof( buf ) ); vbuf = buf;
     TEST_ASSERT( ecp_tls_write_point( &grp, &grp.G,
                     POLARSSL_ECP_PF_COMPRESSED, &olen, buf, 256 ) == 0 );
-    TEST_ASSERT( ecp_tls_read_point( &grp, &pt, buf, olen )
+    TEST_ASSERT( ecp_tls_read_point( &grp, &pt, &vbuf, olen )
                  == POLARSSL_ERR_ECP_BAD_INPUT_DATA );
+    TEST_ASSERT( vbuf == buf + olen );
 
+    memset( buf, 0x00, sizeof( buf ) ); vbuf = buf;
     TEST_ASSERT( ecp_tls_write_point( &grp, &grp.G,
                     POLARSSL_ECP_PF_UNCOMPRESSED, &olen, buf, 256 ) == 0 );
-    TEST_ASSERT( ecp_tls_read_point( &grp, &pt, buf, olen ) == 0 );
+    TEST_ASSERT( ecp_tls_read_point( &grp, &pt, &vbuf, olen ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &grp.G.X, &pt.X ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &grp.G.Y, &pt.Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &grp.G.Z, &pt.Z ) == 0 );
+    TEST_ASSERT( vbuf == buf + olen );
 
+    memset( buf, 0x00, sizeof( buf ) ); vbuf = buf;
     TEST_ASSERT( ecp_set_zero( &pt ) == 0 );
     TEST_ASSERT( ecp_tls_write_point( &grp, &pt,
                     POLARSSL_ECP_PF_COMPRESSED, &olen, buf, 256 ) == 0 );
-    TEST_ASSERT( ecp_tls_read_point( &grp, &pt, buf, olen ) == 0 );
+    TEST_ASSERT( ecp_tls_read_point( &grp, &pt, &vbuf, olen ) == 0 );
     TEST_ASSERT( ecp_is_zero( &pt ) );
+    TEST_ASSERT( vbuf == buf + olen );
 
+    memset( buf, 0x00, sizeof( buf ) ); vbuf = buf;
     TEST_ASSERT( ecp_set_zero( &pt ) == 0 );
     TEST_ASSERT( ecp_tls_write_point( &grp, &pt,
                     POLARSSL_ECP_PF_UNCOMPRESSED, &olen, buf, 256 ) == 0 );
-    TEST_ASSERT( ecp_tls_read_point( &grp, &pt, buf, olen ) == 0 );
+    TEST_ASSERT( ecp_tls_read_point( &grp, &pt, &vbuf, olen ) == 0 );
     TEST_ASSERT( ecp_is_zero( &pt ) );
+    TEST_ASSERT( vbuf == buf + olen );
 
     ecp_group_free( &grp );
     ecp_point_free( &pt );