1f35d131bSJerome Forissier // SPDX-License-Identifier: BSD-2-Clause
2f35d131bSJerome Forissier /*
3f35d131bSJerome Forissier * Copyright (c) 2020, Huawei Technologies Co., Ltd
4f35d131bSJerome Forissier */
5f35d131bSJerome Forissier
6*b224894fSSumit Garg #include <compiler.h>
7f35d131bSJerome Forissier #include <printk.h>
8f35d131bSJerome Forissier #include <stdio.h>
9*b224894fSSumit Garg #include <stdlib.h>
10f35d131bSJerome Forissier
sprintf(char * str,const char * fmt,...)11f35d131bSJerome Forissier int sprintf(char *str, const char *fmt, ...)
12f35d131bSJerome Forissier {
13f35d131bSJerome Forissier int retval;
14f35d131bSJerome Forissier va_list ap;
15f35d131bSJerome Forissier
16f35d131bSJerome Forissier va_start(ap, fmt);
17f35d131bSJerome Forissier retval = __vsprintf(str, fmt, ap);
18f35d131bSJerome Forissier va_end(ap);
19f35d131bSJerome Forissier
20f35d131bSJerome Forissier return retval;
21f35d131bSJerome Forissier }
22*b224894fSSumit Garg
__sprintf_chk(char * str,int flag __unused,size_t slen,const char * fmt,...)23*b224894fSSumit Garg int __sprintf_chk(char *str, int flag __unused, size_t slen,
24*b224894fSSumit Garg const char *fmt, ...)
25*b224894fSSumit Garg {
26*b224894fSSumit Garg int retval;
27*b224894fSSumit Garg va_list ap;
28*b224894fSSumit Garg
29*b224894fSSumit Garg if (slen == 0)
30*b224894fSSumit Garg abort();
31*b224894fSSumit Garg
32*b224894fSSumit Garg va_start(ap, fmt);
33*b224894fSSumit Garg retval = __vsnprintf(str, slen, fmt, ap, false);
34*b224894fSSumit Garg va_end(ap);
35*b224894fSSumit Garg
36*b224894fSSumit Garg if (retval > 0 && (size_t)retval >= slen)
37*b224894fSSumit Garg abort();
38*b224894fSSumit Garg
39*b224894fSSumit Garg return retval;
40*b224894fSSumit Garg }
41