• Peter Oberparleiter's avatar
    s390/cert_store: fix string length handling · 5c95bf27
    Peter Oberparleiter authored
    Building cert_store.o with W=1 reveals this bug:
    
            CC      arch/s390/kernel/cert_store.o
              arch/s390/kernel/cert_store.c:443:45: warning: ‘sprintf’ may write a terminating nul past the end of the destination [-Wformat-overflow=]
                443 |         sprintf(desc + name_len, ":%04u:%08u", vce->vce_hdr.vc_index, cs_token);
                    |                                             ^
              arch/s390/kernel/cert_store.c:443:9: note: ‘sprintf’ output between 15 and 18 bytes into a destination of size 15
                443 |         sprintf(desc + name_len, ":%04u:%08u", vce->vce_hdr.vc_index, cs_token);
    
    Fix this by using the correct maximum width for each integer component
    in both buffer length calculation and format string. Also switch to
    using snprintf() to guard against potential future changes to the
    integer range of each component.
    
    Fixes: 8cf57d72 ("s390: add support for user-defined certificates")
    Reported-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Reviewed-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    5c95bf27
cert_store.c 20.8 KB