Skip to content

Commit 7f3e86c

Browse files
committed
rc: fix unalligned memory access
1 parent 55410b4 commit 7f3e86c

1 file changed

Lines changed: 10 additions & 16 deletions

File tree

bld/rc/rc/c/semdiag2.c

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,6 @@ static size_t SemOS2DumpPresParams( char *ptr, PresParamListOS2 *list )
433433
PresParamsOS2 *presparams;
434434
DataElemList *travptr;
435435
size_t bytes;
436-
uint_32 *data;
437436
unsigned i;
438437
size_t len;
439438

@@ -442,35 +441,31 @@ static size_t SemOS2DumpPresParams( char *ptr, PresParamListOS2 *list )
442441
return( 0 );
443442

444443
// Total size of presparams
445-
data = (uint_32 *)ptr;
446-
*data = list->size;
444+
MPUT_32_UN( ptr, list->size );
447445
bytes = 4;
448446
ptr += 4;
449447

450448
for( presparams = list->head; presparams != NULL; presparams = presparams->next ) {
451449
// Presparam ID or name length
452450
if( !(presparams->Name->ord.fFlag == 0xFF) ) { // Presparam has name
453451
len = strlen( presparams->Name->name ) + 1;
454-
data = (uint_32 *)ptr;
455-
*data++ = 0; // First ULONG is 0 to indicate this isn't numeric ID
456-
*data = (uint_32)len; // Next is string len
457-
ptr += 8;
452+
MPUT_32_UN( ptr, 0 ); // First ULONG is 0 to indicate this isn't numeric ID
453+
ptr += 4;
454+
MPUT_32_UN( ptr, len ); // Next is string len
455+
ptr += 4;
458456
strcpy( ptr, presparams->Name->name );
459-
ptr += len;
460-
data = (uint_32 *)ptr;
461-
*data = (uint_32)-1; // Not sure what this is
457+
ptr += len;
458+
MPUT_32_UN( ptr, (uint_32)-1 ); // Not sure what this is
462459
ptr += 4;
463460
bytes += len + 12;
464461
} else {
465-
data = (uint_32 *)ptr;
466-
*data = presparams->Name->ord.wOrdinalID;
462+
MPUT_32_UN( ptr, presparams->Name->ord.wOrdinalID );
467463
ptr += 4;
468464
bytes += 4;
469465
}
470466

471467
// Following is the size of presparam data
472-
data = (uint_32 *)ptr;
473-
*data = presparams->size;
468+
MPUT_32_UN( ptr, presparams->size );
474469
ptr += 4;
475470
bytes += 4;
476471

@@ -482,8 +477,7 @@ static size_t SemOS2DumpPresParams( char *ptr, PresParamListOS2 *list )
482477
ptr += len;
483478
bytes += len;
484479
} else {
485-
data = (uint_32 *)ptr;
486-
*data = travptr->data[i].Item.Num;
480+
MPUT_32_UN( ptr, travptr->data[i].Item.Num );
487481
ptr += 4;
488482
bytes += 4; // Data elements are ULONGs
489483
}

0 commit comments

Comments
 (0)