lib/*: remove unnecessary cast to ssize_t
authorDaiki Ueno <dueno@redhat.com>
Thu, 8 Aug 2019 16:04:18 +0000 (18:04 +0200)
committerDaiki Ueno <dueno@redhat.com>
Thu, 12 Sep 2019 09:32:06 +0000 (11:32 +0200)
Signed-off-by: Daiki Ueno <dueno@redhat.com>
26 files changed:
lib/crypto-api.c
lib/ext/alpn.c
lib/ext/client_cert_type.c
lib/ext/cookie.c
lib/ext/ec_point_formats.c
lib/ext/key_share.c
lib/ext/max_record.c
lib/ext/psk_ke_modes.c
lib/ext/record_size_limit.c
lib/ext/safe_renegotiation.c
lib/ext/server_cert_type.c
lib/ext/server_name.c
lib/ext/session_ticket.c
lib/ext/signature.c
lib/ext/srp.c
lib/ext/srtp.c
lib/ext/status_request.c
lib/ext/supported_groups.c
lib/ext/supported_versions.c
lib/extv.c
lib/sslv2_compat.c
lib/supplemental.c
lib/tls13/certificate.c
lib/tls13/psk_ext_parser.c
lib/tls13/psk_ext_parser.h
lib/tls13/session_ticket.c

index 2834c019961b3c5fb4124450a23dedbf1f105b12..09b3d7bfc6d3627982ea3dfcfa546f38299df81e 100644 (file)
@@ -990,9 +990,9 @@ gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle,
        api_aead_cipher_hd_st *h = handle;
        ssize_t ret;
        uint8_t *dst;
-       ssize_t dst_size, total = 0;
+       size_t dst_size, total = 0;
        uint8_t *p;
-       ssize_t blocksize = handle->ctx_enc.e->blocksize;
+       size_t blocksize = handle->ctx_enc.e->blocksize;
        struct iov_iter_st iter;
        size_t blocks;
 
@@ -1071,7 +1071,7 @@ gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle,
                if (ret == 0)
                        break;
                blocks = ret;
-               if (unlikely((size_t) dst_size < blocksize * blocks))
+               if (unlikely(dst_size < blocksize * blocks))
                        return gnutls_assert_val(GNUTLS_E_SHORT_MEMORY_BUFFER);
                ret = _gnutls_cipher_encrypt2(&handle->ctx_enc, p,
                                              blocksize * blocks,
@@ -1083,7 +1083,7 @@ gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle,
                total += blocksize * blocks;
        }
        if (iter.block_offset > 0) {
-               if (unlikely((size_t) dst_size < iter.block_offset))
+               if (unlikely(dst_size < iter.block_offset))
                        return gnutls_assert_val(GNUTLS_E_SHORT_MEMORY_BUFFER);
                ret = _gnutls_cipher_encrypt2(&handle->ctx_enc,
                                              iter.block, iter.block_offset,
@@ -1095,7 +1095,7 @@ gnutls_aead_cipher_encryptv(gnutls_aead_cipher_hd_t handle,
                total += iter.block_offset;
        }
 
-       if ((size_t)dst_size < tag_size)
+       if (dst_size < tag_size)
                return gnutls_assert_val(GNUTLS_E_SHORT_MEMORY_BUFFER);
 
        _gnutls_cipher_tag(&handle->ctx_enc, dst, tag_size);
index 34f6ce09dc949f9872d5b58cc1854e6dae10459b..b9991f0a1a5766a19a4747c63dcf175e592dac20 100644 (file)
@@ -51,13 +51,12 @@ const hello_ext_entry_st ext_mod_alpn = {
 
 static int
 _gnutls_alpn_recv_params(gnutls_session_t session,
-                        const uint8_t * data, size_t _data_size)
+                        const uint8_t * data, size_t data_size)
 {
        unsigned int i;
        int ret;
        const uint8_t *p = data;
        unsigned len1, len;
-       ssize_t data_size = _data_size;
        alpn_ext_st *priv;
        gnutls_ext_priv_data_t epriv;
        int selected_protocol_index;
index 471d42c5f5939b2e7c5125965c4a3a3333457588..b627b71f949d89bec7321a4f2fa6d2d26255e6fb 100644 (file)
@@ -73,7 +73,6 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session,
        gnutls_certificate_type_t cert_type;
 
        uint8_t i, found = 0;
-       ssize_t len = data_size;
        const uint8_t* pdata = data;
 
        /* Only activate this extension if we have cert credentials set
@@ -86,7 +85,7 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session,
 
                /* Compare packet length with expected packet length. For the
                 * client this is a single byte. */
-               if (len != 1) {
+               if (data_size != 1) {
                        return
                                        gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
                }
@@ -136,8 +135,8 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session,
 
        } else {        // server mode
                // Compare packet length with expected packet length.
-               DECR_LEN(len, 1);
-               if (data[0] != len) {
+               DECR_LEN(data_size, 1);
+               if (data[0] != data_size) {
                        return
                                        gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
                }
@@ -145,7 +144,7 @@ static int _gnutls_client_cert_type_recv_params(gnutls_session_t session,
 
                // Assign the contents of our data buffer to a gnutls_datum_t
                cert_types.data = (uint8_t*)pdata; // Need casting to get rid of 'discards const qualifier' warning
-               cert_types.size = len;
+               cert_types.size = data_size;
 
                // Store the client certificate types in our session
                _gnutls_hello_ext_set_datum(session,
index 1e66c3d49a91b8085661ab643bd1caa4ed182a68..0feb2f0e5a21d3f6d9807d1ec60feaf0e757cec2 100644 (file)
@@ -53,10 +53,9 @@ const hello_ext_entry_st ext_mod_cookie = {
 /* Only client sends this extension. */
 static int
 cookie_recv_params(gnutls_session_t session,
-                  const uint8_t * data, size_t _data_size)
+                  const uint8_t * data, size_t data_size)
 {
-       ssize_t data_size = _data_size;
-       ssize_t csize;
+       size_t csize;
        int ret;
        gnutls_datum_t tmp;
 
index eb59ec139df094f3dcdd3f545661ed2330cd86dd..c702d434c00f7d8dedad456ff63d87a7a79264c1 100644 (file)
@@ -57,11 +57,10 @@ const hello_ext_entry_st ext_mod_supported_ec_point_formats = {
 static int
 _gnutls_supported_ec_point_formats_recv_params(gnutls_session_t session,
                                     const uint8_t * data,
-                                    size_t _data_size)
+                                    size_t data_size)
 {
-       int len, i;
+       size_t len, i;
        int uncompressed = 0;
-       int data_size = _data_size;
 
        if (session->security_parameters.entity == GNUTLS_CLIENT) {
                if (data_size < 1)
@@ -91,7 +90,7 @@ _gnutls_supported_ec_point_formats_recv_params(gnutls_session_t session,
                /* only sanity check here. We only support uncompressed points
                 * and a client must support it thus nothing to check.
                 */
-               if (_data_size < 1)
+               if (data_size < 1)
                        return
                            gnutls_assert_val
                            (GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION);
index 599eff8fbca7201ee1164bca8f5d13a09599877d..8f0912e694c43dfaf5c6b3cdbd82ec51cf0f993a 100644 (file)
@@ -504,11 +504,10 @@ client_use_key_share(gnutls_session_t session, const gnutls_group_entry_st *grou
 
 static int
 key_share_recv_params(gnutls_session_t session,
-                     const uint8_t * data, size_t _data_size)
+                     const uint8_t * data, size_t data_size)
 {
        int ret;
-       ssize_t data_size = _data_size;
-       ssize_t size;
+       size_t size;
        unsigned gid;
        const version_entry_st *ver;
        const gnutls_group_entry_st *group;
index dbb98cf620e5beb03500d104f9434bb4515ecb53..3cada69beeabc635244c0949d664e84029f63cb8 100644 (file)
@@ -65,10 +65,9 @@ const hello_ext_entry_st ext_mod_max_record_size = {
 
 static int
 _gnutls_max_record_recv_params(gnutls_session_t session,
-                              const uint8_t * data, size_t _data_size)
+                              const uint8_t * data, size_t data_size)
 {
        ssize_t new_size;
-       ssize_t data_size = _data_size;
 
        if (session->internals.hsk_flags & HSK_RECORD_SIZE_LIMIT_NEGOTIATED)
                return 0;
index da7a55098b22212195f4cdb3fa6730ac049685a2..8d8effb4333722e48570ea4234a1160814ae19c9 100644 (file)
@@ -106,10 +106,9 @@ psk_ke_modes_send_params(gnutls_session_t session,
  */
 static int
 psk_ke_modes_recv_params(gnutls_session_t session,
-                        const unsigned char *data, size_t _len)
+                        const unsigned char *data, size_t len)
 {
        uint8_t ke_modes_len;
-       ssize_t len = _len;
        const version_entry_st *vers = get_version(session);
        gnutls_psk_server_credentials_t cred;
        int dhpsk_pos = MAX_POS;
index e9fe6a1d8d718df1a176b24a38c2a3990be2f362..0e94fece35bd71ec38fbbba5928a2dcdefb61b7f 100644 (file)
@@ -48,10 +48,9 @@ const hello_ext_entry_st ext_mod_record_size_limit = {
 
 static int
 _gnutls_record_size_limit_recv_params(gnutls_session_t session,
-                                     const uint8_t * data, size_t _data_size)
+                                     const uint8_t * data, size_t data_size)
 {
        ssize_t new_size;
-       ssize_t data_size = _data_size;
        const version_entry_st *vers;
 
        DECR_LEN(data_size, 2);
index 6424f45b5c47be2109eb90fff4eb8fcc627eeda5..bb4a57e4563d30961b29d6615ecddeae90045b7a 100644 (file)
@@ -265,10 +265,9 @@ int _gnutls_ext_sr_send_cs(gnutls_session_t session)
 
 static int
 _gnutls_sr_recv_params(gnutls_session_t session,
-                      const uint8_t * data, size_t _data_size)
+                      const uint8_t * data, size_t data_size)
 {
        unsigned int len;
-       ssize_t data_size = _data_size;
        sr_ext_st *priv;
        gnutls_ext_priv_data_t epriv;
        int set = 0, ret;
index dbcb3971b7251e30fa95244424041224307a9961..864a44bbc728c287530d3404e5b1d430f37c9855 100644 (file)
@@ -73,7 +73,6 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session,
        gnutls_certificate_type_t cert_type;
 
        uint8_t i, found = 0;
-       ssize_t len = data_size;
        const uint8_t* pdata = data;
 
        /* Only activate this extension if we have cert credentials set
@@ -86,7 +85,7 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session,
 
                /* Compare packet length with expected packet length. For the
                 * client this is a single byte. */
-               if (len != 1) {
+               if (data_size != 1) {
                        return
                                        gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
                }
@@ -135,8 +134,8 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session,
 
        } else {                // server mode
                // Compare packet length with expected packet length.
-               DECR_LEN(len, 1);
-               if (data[0] != len) {
+               DECR_LEN(data_size, 1);
+               if (data[0] != data_size) {
                        return
                                        gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
                }
@@ -144,7 +143,7 @@ static int _gnutls_server_cert_type_recv_params(gnutls_session_t session,
 
                // Assign the contents of our data buffer to a gnutls_datum_t
                cert_types.data = (uint8_t*)pdata; // Need casting to get rid of 'discards const qualifier' warning
-               cert_types.size = len;
+               cert_types.size = data_size;
 
                // Store the server certificate types in our session
                _gnutls_hello_ext_set_datum(session,
index 259dc998ea96755674565c9fc30542b46f1a5b85..0c633156903a6d38175b201a028bf1bef04a4034 100644 (file)
@@ -66,11 +66,10 @@ const hello_ext_entry_st ext_mod_server_name = {
  */
 static int
 _gnutls_server_name_recv_params(gnutls_session_t session,
-                               const uint8_t * data, size_t _data_size)
+                               const uint8_t * data, size_t data_size)
 {
        const unsigned char *p;
        uint16_t len, type;
-       ssize_t data_size = _data_size;
        gnutls_datum_t name;
 
        if (session->security_parameters.entity == GNUTLS_SERVER) {
index 98db39ff889501b2b11c050c013196445e417ce1..263273fa2b292ce74cdfb5c6e406ef5ce1f54a1c 100644 (file)
@@ -78,7 +78,7 @@ static int
 unpack_ticket(const gnutls_datum_t *ticket_data, struct ticket_st *ticket)
 {
        const uint8_t * data = ticket_data->data;
-       ssize_t data_size = ticket_data->size;
+       size_t data_size = ticket_data->size;
        const uint8_t *encrypted_state;
 
        /* Format:
@@ -371,11 +371,10 @@ unpack_session(gnutls_session_t session, const gnutls_datum_t *state)
 
 static int
 session_ticket_recv_params(gnutls_session_t session,
-                          const uint8_t * data, size_t _data_size)
+                          const uint8_t * data, size_t data_size)
 {
        gnutls_datum_t ticket_data;
        gnutls_datum_t state;
-       ssize_t data_size = _data_size;
        int ret;
 
        if (session->internals.flags & GNUTLS_NO_TICKETS)
index e734d2c7d40662198cd3db3d3a18cb7fcf44f89a..a90f58d5386990d08aa9b28bf389fbf88248f7bf 100644 (file)
@@ -187,9 +187,8 @@ _gnutls_sign_algorithm_parse_data(gnutls_session_t session,
 static int
 _gnutls_signature_algorithm_recv_params(gnutls_session_t session,
                                        const uint8_t * data,
-                                       size_t _data_size)
+                                       size_t data_size)
 {
-       ssize_t data_size = _data_size;
        int ret;
 
        if (session->security_parameters.entity == GNUTLS_CLIENT) {
index 8b58222e0ccc560c7923eeab3d549f7182e97e0f..07f6e6883538a0ff5714efd30e87ea4e541c1cca 100644 (file)
@@ -59,10 +59,9 @@ const hello_ext_entry_st ext_mod_srp = {
 
 static int
 _gnutls_srp_recv_params(gnutls_session_t session, const uint8_t * data,
-                       size_t _data_size)
+                       size_t data_size)
 {
        uint8_t len;
-       ssize_t data_size = _data_size;
        gnutls_ext_priv_data_t epriv;
        srp_ext_st *priv;
 
index 3fc7ed35aacf37c29c61911b60525e9de85d2fbc..412e26d45d737bc64b6f79bad0a726981d2af03f 100644 (file)
@@ -162,13 +162,12 @@ const char *gnutls_srtp_get_profile_name(gnutls_srtp_profile_t profile)
 
 static int
 _gnutls_srtp_recv_params(gnutls_session_t session,
-                        const uint8_t * data, size_t _data_size)
+                        const uint8_t * data, size_t data_size)
 {
        unsigned int i;
        int ret;
        const uint8_t *p = data;
-       int len;
-       ssize_t data_size = _data_size;
+       size_t len;
        srtp_ext_st *priv;
        gnutls_ext_priv_data_t epriv;
        uint16_t profile;
index d8779e8cfe3d249a24a7094e86575c589e94e081..cf9d5bd03ac338c02df2d5d93a010b004d3e2258 100644 (file)
@@ -86,9 +86,8 @@ client_send(gnutls_session_t session,
 static int
 server_recv(gnutls_session_t session,
            status_request_ext_st * priv,
-           const uint8_t * data, size_t size)
+           const uint8_t * data, size_t data_size)
 {
-       ssize_t data_size = size;
        unsigned rid_bytes = 0;
 
        /* minimum message is type (1) + responder_id_list (2) +
index 952d3bb0c559d8b5a73fba80629d123a4372aa0b..ef7859f73198abc184660f228da8f36e88ad3a44 100644 (file)
@@ -93,10 +93,9 @@ static unsigned get_min_dh(gnutls_session_t session)
  */
 static int
 _gnutls_supported_groups_recv_params(gnutls_session_t session,
-                                 const uint8_t * data, size_t _data_size)
+                                 const uint8_t * data, size_t data_size)
 {
        int i;
-       ssize_t data_size = _data_size;
        uint16_t len;
        const uint8_t *p = data;
        const gnutls_group_entry_st *group = NULL;
index 52828ee37ee2725ee2092b31c811f01199f63f1c..8d52fad5c0305e9b9d6fcf2e992f47fbec791d32 100644 (file)
@@ -54,12 +54,11 @@ const hello_ext_entry_st ext_mod_supported_versions = {
 
 static int
 supported_versions_recv_params(gnutls_session_t session,
-                              const uint8_t * data, size_t _data_size)
+                              const uint8_t * data, size_t data_size)
 {
        const version_entry_st *vers;
-       ssize_t data_size = _data_size;
        uint8_t major, minor;
-       ssize_t bytes;
+       size_t bytes;
        int ret;
 
        if (session->security_parameters.entity == GNUTLS_SERVER) {
index bfdfdf97480e6c9ffb8c9aa69b36adfed23d4f86..0c0c46f326577ecc51df6c651ac2d4b49c82ef33 100644 (file)
@@ -105,7 +105,7 @@ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb,
                         const gnutls_datum_t *data, unsigned int flags)
 {
        if (flags & GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO) {
-               ssize_t size = data->size;
+               size_t size = data->size;
                size_t len;
                uint8_t *p = data->data;
 
@@ -137,12 +137,12 @@ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb,
                DECR_LEN(size, len);
                p += len;
 
-               if (size <= 0)
+               if (size == 0)
                        return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE);
 
                return _gnutls_extv_parse(ctx, cb, p, size);
        } else if (flags & GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO) {
-               ssize_t size = data->size;
+               size_t size = data->size;
                size_t len;
                uint8_t *p = data->data;
 
@@ -181,7 +181,7 @@ int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb,
                DECR_LEN(size, len);
                p += len;
 
-               if (size <= 0)
+               if (size == 0)
                        return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE);
 
                return _gnutls_extv_parse(ctx, cb, p, size);
index 6122d1098c2f0c054bc8bdc5b73be245edc0f9ee..9d247ba4cb2b2ccd5edd834526be75e40d85a9fa 100644 (file)
@@ -87,14 +87,13 @@ _gnutls_handshake_select_v2_suite(gnutls_session_t session,
  */
 int
 _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data,
-                            unsigned int datalen)
+                            unsigned int len)
 {
        uint16_t session_id_len = 0;
        int pos = 0;
        int ret = 0, sret = 0;
        uint16_t sizeOfSuites;
        uint8_t rnd[GNUTLS_RANDOM_SIZE], major, minor;
-       int len = datalen;
        int neg_version;
        const version_entry_st *vers;
        uint16_t challenge;
index cd90fa1fba02024c6457b6af67696943440e941a..07b38cc938e4cf65ad00946e4baf35bff2bb4609 100644 (file)
@@ -192,14 +192,14 @@ _gnutls_parse_supplemental(gnutls_session_t session,
                           const uint8_t * data, int datalen)
 {
        const uint8_t *p = data;
-       ssize_t dsize = datalen;
+       size_t dsize = datalen;
        size_t total_size;
 
        DECR_LEN(dsize, 3);
        total_size = _gnutls_read_uint24(p);
        p += 3;
 
-       if (dsize != (ssize_t) total_size) {
+       if (dsize != total_size) {
                gnutls_assert();
                return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER;
        }
index bd257237f3dc1ba0371f194099e209c220538538..8a1a1187278f56465aafafa1afd842247415c14a 100644 (file)
@@ -360,11 +360,12 @@ static int parse_cert_extension(void *_ctx, unsigned tls_id, const uint8_t *data
 static int
 parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size)
 {
-       int len, ret;
+       int ret;
+       size_t len;
        uint8_t *p = data;
        cert_auth_info_t info;
        gnutls_certificate_credentials_t cred;
-       ssize_t dsize = data_size, size;
+       size_t size;
        int i;
        unsigned npeer_certs, npeer_ocsp, j;
        crt_cert_ctx_st ctx;
@@ -395,31 +396,31 @@ parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size)
        if (info == NULL)
                return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS);
 
-       DECR_LEN(dsize, 3);
+       DECR_LEN(data_size, 3);
        size = _gnutls_read_uint24(p);
        p += 3;
 
-       if (size != dsize)
+       if (size != data_size)
                return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
 
        if (size == 0)
                return gnutls_assert_val(GNUTLS_E_NO_CERTIFICATE_FOUND);
 
-       i = dsize;
+       i = data_size;
 
        while (i > 0) {
-               DECR_LEN(dsize, 3);
+               DECR_LEN(data_size, 3);
                len = _gnutls_read_uint24(p);
                if (len == 0)
                        return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
 
-               DECR_LEN(dsize, len);
+               DECR_LEN(data_size, len);
                p += len + 3;
                i -= len + 3;
 
-               DECR_LEN(dsize, 2);
+               DECR_LEN(data_size, 2);
                len = _gnutls_read_uint16(p);
-               DECR_LEN(dsize, len);
+               DECR_LEN(data_size, len);
 
                i -= len + 2;
                p += len + 2;
@@ -427,7 +428,7 @@ parse_cert_list(gnutls_session_t session, uint8_t * data, size_t data_size)
                nentries++;
        }
 
-       if (dsize != 0)
+       if (data_size != 0)
                return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
 
        /* this is unnecessary - keeping to avoid a regression due to a re-org
index 6e3a12f90ebf9d6e9aa608afa2c93c092721129c..33ebc04615e684bf0515adf4b77a2e86837d1fa1 100644 (file)
  * are present, or 0, on success.
  */
 int _gnutls13_psk_ext_parser_init(psk_ext_parser_st *p,
-                                 const unsigned char *data, size_t _len)
+                                 const unsigned char *data, size_t len)
 {
-       ssize_t len = _len;
-
        if (!p || !data || !len)
                return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
 
index 30b47e904c0fcbaa2978e85a80313d0197082b6f..f46b211e0acf05973c15507d7b887e285efe4d29 100644 (file)
 
 struct psk_ext_parser_st {
        const unsigned char *identities_data;
-       ssize_t identities_len;
+       size_t identities_len;
 
        const unsigned char *binders_data;
-       ssize_t binders_len;
+       size_t binders_len;
 };
 
 typedef struct psk_ext_parser_st psk_ext_parser_st;
index 146aee9b1783d4dbb8825669cd5dca0e2b9c0cce..072a56d9c142e0d5ca894a0b3ec0f29dbe3f4a49 100644 (file)
@@ -105,7 +105,7 @@ unpack_ticket(gnutls_session_t session, gnutls_datum_t *packed, tls13_ticket_st
        gnutls_mac_algorithm_t kdf;
        const mac_entry_st *prf;
        uint8_t *p;
-       ssize_t len;
+       size_t len;
        uint64_t v;
        int ret;