[dlls/kernel/atom16.c] strncpy elimination.
Peter Berg Larsen
pebl at math.ku.dk
Sun Mar 27 14:03:29 CST 2005
Changelog:
Dont trace uninitialized buffer. Change strncpy to memcpy.
Index: dlls/kernel/atom16.c
===================================================================
RCS file: /home/wine/wine/dlls/kernel/atom16.c,v
retrieving revision 1.1
diff -u -r1.1 atom16.c
--- dlls/kernel/atom16.c 3 Feb 2005 16:58:21 -0000 1.1
+++ dlls/kernel/atom16.c 27 Mar 2005 16:42:31 -0000
@@ -210,14 +210,14 @@
if (ATOM_IsIntAtomA( str, &iatom )) return iatom;
- TRACE("%s\n",debugstr_a(buffer));
+ TRACE("%s\n",debugstr_a(str));
+
+ if (!(table = ATOM_GetTable( TRUE ))) return 0;
/* Make a copy of the string to be sure it doesn't move in linear memory. */
lstrcpynA( buffer, str, sizeof(buffer) );
len = strlen( buffer );
- if (!(table = ATOM_GetTable( TRUE ))) return 0;
-
hash = ATOM_Hash( table->size, buffer, len );
entry = table->entries[hash];
while (entry)
@@ -242,9 +242,10 @@
entryPtr->next = table->entries[hash];
entryPtr->refCount = 1;
entryPtr->length = len;
- /* Some applications _need_ the '\0' padding provided by this strncpy */
- strncpy( entryPtr->str, buffer, ae_len - sizeof(ATOMENTRY) + 1 );
- entryPtr->str[ae_len - sizeof(ATOMENTRY)] = '\0';
+ memcpy( entryPtr->str, buffer, len);
+ /* Some applications _need_ the '\0' padding provided by memset */
+ /* Note that 1 byte of the str is accounted for in the ATOMENTRY struct */
+ memset( entryPtr->str+len, 0, ae_len - sizeof(ATOMENTRY) - (len - 1));
table->entries[hash] = entry;
TRACE("-- new 0x%x\n", entry);
return HANDLETOATOM( entry );
More information about the wine-patches
mailing list