vfl_freak
Premium-User
[EDIT]
Hat sich erledigt - hatte einen Gedankenfehler drin ......
[/EDIT]
Guten morgen,
ich habe mal ein (vielleicht ganz dumme) Fragew, da ich irgendwie gerade auf dem Schlauch stehe (ist wohl noch zu früh)![Roll eyes :rolleyes: :rolleyes:](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
In einem älteren Projekt (das derzeit von VS6 auf VS2010 umgestellt wird) werden an div. Stellen KeyBuffer-Variablen gefüllt, die später für die KeyInfo unser "Datenbank" (BTrieve .....) verwendet werden.
In einem Fall wird der KeyBuffer wie folgt gefüllt:
Nun habe ich das memcpy auf memcpy_s umgestellt:
Ok, das lässt so compilieren und hat bei div. Tests auch funktiuniert ![Smile :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Meine Frage nun: muss hier wirklich die Zielbuffer-Länge "10" angeben, obwohl doch nur 8 Byte kopiert werden sollen?
Kann sowas zu Problemen führen :confuses:
BTW: warum meckert eigentlich der Compiler diese Stellen "memcpy" nicht an, so wie es im Dutzend bei "sprintf" macht, wo "sprintf_s" gefordert wird?
Danke und Gruß
Klaus
Hat sich erledigt - hatte einen Gedankenfehler drin ......
[/EDIT]
Guten morgen,
ich habe mal ein (vielleicht ganz dumme) Fragew, da ich irgendwie gerade auf dem Schlauch stehe (ist wohl noch zu früh)
In einem älteren Projekt (das derzeit von VS6 auf VS2010 umgestellt wird) werden an div. Stellen KeyBuffer-Variablen gefüllt, die später für die KeyInfo unser "Datenbank" (BTrieve .....) verwendet werden.
In einem Fall wird der KeyBuffer wie folgt gefüllt:
C++:
// req_databuf ist das Byte-Array, das von Client übertragen wird (ist hier korrekt gefüllt - per Debugger geprüft
...
BYTE cKeyBuffer[10]; // die Keybuffer-Variable
cKeyBuffer[0] = req_databuf[35];
memcpy( &cKeyBuffer[1], &req_databuf[37], 8 );
cKeyBuffer[9] = req_databuf[36];
Nun habe ich das memcpy auf memcpy_s umgestellt:
C++:
memcpy_s( &cKeyBuf[1], sizeof cKeyBuf, &req_databuf[37], 8 );
Meine Frage nun: muss hier wirklich die Zielbuffer-Länge "10" angeben, obwohl doch nur 8 Byte kopiert werden sollen?
Kann sowas zu Problemen führen :confuses:
BTW: warum meckert eigentlich der Compiler diese Stellen "memcpy" nicht an, so wie es im Dutzend bei "sprintf" macht, wo "sprintf_s" gefordert wird?
Danke und Gruß
Klaus
Zuletzt bearbeitet von einem Moderator: