annotate src/lib/safe-memset.c @ 23007:36e01285b5b8

lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Mon, 18 Mar 2019 00:52:37 +0100
parents cb108f786fb4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22713
cb108f786fb4 Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 21390
diff changeset
1 /* Copyright (c) 2002-2018 Dovecot authors, see the included COPYING file */
804
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "lib.h"
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 #include "safe-memset.h"
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 void safe_memset(void *data, int c, size_t size)
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 {
17247
09c114091c88 safe_memset() wasn't safe with modern compilers anymore.
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
8 volatile unsigned int volatile_zero_idx = 0;
804
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 volatile unsigned char *p = data;
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10
17265
eae44873dbc2 safe_memset(size=0) triggered read access to data[0], possibly crashing.
Timo Sirainen <tss@iki.fi>
parents: 17247
diff changeset
11 if (size == 0)
eae44873dbc2 safe_memset(size=0) triggered read access to data[0], possibly crashing.
Timo Sirainen <tss@iki.fi>
parents: 17247
diff changeset
12 return;
eae44873dbc2 safe_memset(size=0) triggered read access to data[0], possibly crashing.
Timo Sirainen <tss@iki.fi>
parents: 17247
diff changeset
13
17247
09c114091c88 safe_memset() wasn't safe with modern compilers anymore.
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
14 do {
09c114091c88 safe_memset() wasn't safe with modern compilers anymore.
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
15 memset(data, c, size);
09c114091c88 safe_memset() wasn't safe with modern compilers anymore.
Timo Sirainen <tss@iki.fi>
parents: 17130
diff changeset
16 } while (p[volatile_zero_idx] != c);
804
bf38c8f30a4c Added safe_memset() which guarantees that compiler optimizations don't
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 }