Line data Source code
1 : /*
2 : * Copyright (C) 2004-2026 Savoir-faire Linux Inc.
3 : *
4 : * This program is free software: you can redistribute it and/or modify
5 : * it under the terms of the GNU General Public License as published by
6 : * the Free Software Foundation, either version 3 of the License, or
7 : * (at your option) any later version.
8 : *
9 : * This program is distributed in the hope that it will be useful,
10 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 : * GNU General Public License for more details.
13 : *
14 : * You should have received a copy of the GNU General Public License
15 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 : */
17 :
18 : #include "memory.h"
19 :
20 : #ifdef _WIN32
21 : #include <windows.h>
22 : #include <wincrypt.h>
23 : #endif
24 :
25 : #include <algorithm>
26 :
27 : namespace jami {
28 : namespace secure {
29 :
30 : void
31 14213 : memzero(void* ptr, std::size_t length)
32 : {
33 : #ifdef _WIN32
34 : SecureZeroMemory(ptr, length);
35 : #else
36 14213 : volatile auto* p = static_cast<unsigned char*>(ptr);
37 14213 : std::fill_n(p, length, 0);
38 : #endif
39 14212 : }
40 :
41 : } // namespace secure
42 : } // namespace jami
43 :
44 : extern "C" void
45 14213 : jami_secure_memzero(void* ptr, size_t length)
46 : {
47 14213 : jami::secure::memzero(ptr, length);
48 14212 : }
|