Re: GnuTLS | Use matching allocator/deallocator (!2058)

Read-only notification of GnuTLS library development activities <[email protected]>
Newsgroups gmane.comp.encryption.gpg.gnutls.devel
Message-ID <[email protected]>


Alexander Sosedkin commented: https://gitlab.com/gnutls/gnutls/-/merge_requests/2058#note_3031254571


And another one I found uses `_gnutls_reallocarray`:

https://gitlab.com/gnutls/gnutls/-/blob/0c49dc6db376c2eccae98b0623dab60729d8f171/lib/cert-cred-x509.c#L1306

https://gitlab.com/gnutls/gnutls/-/blob/0c49dc6db376c2eccae98b0623dab60729d8f171/lib/cert-cred-x509.c#L1332

I used a delightfully low-fi and non-comprehensive approach to identify the suspicious places: mixed mentions within curly bracket blocks:

```
#/usr/bin/env python
# public domain, trivial

import sys
import re
from pathlib import Path

ALLOCATOR_RELATED_FUNCTIONS = [
    ['malloc', 'calloc', 'realloc', 'strdup', 'free'],
    ['gnutls_malloc', 'gnutls_calloc', 'gnutls_realloc', 'gnutls_realloc_fast',
     '_gnutls_reallocarray', '_gnutls_reallocarray_fast', 'gnutls_strdup',
     'gnutls_free', 'gnutls_zfree']
]

for filepath in sorted(sys.argv[1:]):
    content = Path(filepath).read_text()
    if content.count('{') != content.count('}'):
        print(f'{filepath} has curly brace mismatch')
        continue

    stack, blocks = [], []
    for i, char in enumerate(content):
        if char == '{':
            stack.append(i)
        elif char == '}':
            blocks.append((stack.pop(), i))

    for start, end in blocks:
        block_text = content[start:end+1]

        families = []
        for family in ALLOCATOR_RELATED_FUNCTIONS:
            funcs = [f for f in family if re.search(rf'\b{f}\b', block_text)]
            if funcs:
                families.append(funcs)

        if len(families) > 1:
            start_line = content[:start].count('\n') + 1
            end_line = content[:end].count('\n') + 1
            print(f'{filepath}:{start_line}-{end_line}: might mix up ' +
                  ' with '.join(['/'.join(funcs) for funcs in families]))
```

-- 
Reply to this email directly or view it on GitLab: https://gitlab.com/gnutls/gnutls/-/merge_requests/2058#note_3031254571
You're receiving this email because of your account on gitlab.com.

_______________________________________________
Gnutls-devel mailing list
[email protected]
http://lists.gnupg.org/mailman/listinfo/gnutls-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.