Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdint.h>
uint64_t getChallenge() {
uint64_t buffer;
int generated;
int bytesLeft = sizeof(buffer);
int copySize = sizeof(generated) > sizeof(buffer) ? sizeof(buffer) : sizeof(generated);
while (bytesLeft > 0) {
generated=rand();
if (copySize > bytesLeft) {
copySize = bytesLeft;
}
printf("bytesleft %d : generated: %d : copysize %d : oduzeto %d\n",
bytesLeft, generated, copySize, (sizeof(buffer) - bytesLeft));
memcpy((&buffer + (sizeof(buffer) - bytesLeft)), &generated, copySize);
bytesLeft -= copySize;
}
printf ("FUNK: %d %d\n", (unsigned int) buffer, (unsigned int) * (&buffer + 4));
return buffer;
}
int main(int argc, char *argv[]) {
uint64_t tmp;
int i;
srand(time(NULL));
for (i = 0; i < 1000; i++) {
tmp = getChallenge();
printf("MAIN: %d %d\n", (unsigned int) tmp, (unsigned int) *(&tmp + 4));
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdint.h>
uint64_t getChallenge() {
uint64_t buffer;
int generated;
int bytesLeft = sizeof(buffer);
int copySize = sizeof(generated) > sizeof(buffer) ? sizeof(buffer) : sizeof(generated);
while (bytesLeft > 0) {
generated=rand();
if (copySize > bytesLeft) {
copySize = bytesLeft;
}
printf("bytesleft %d : generated: %d : copysize %d : oduzeto %d\n",
bytesLeft, generated, copySize, (sizeof(buffer) - bytesLeft));
memcpy((&buffer + (sizeof(buffer) - bytesLeft)), &generated, copySize);
bytesLeft -= copySize;
}
printf ("FUNK: %d %d\n", (unsigned int) buffer, (unsigned int) * (&buffer + 4));
return buffer;
}
int main(int argc, char *argv[]) {
uint64_t tmp;
int i;
srand(time(NULL));
for (i = 0; i < 1000; i++) {
tmp = getChallenge();
printf("MAIN: %d %d\n", (unsigned int) tmp, (unsigned int) *(&tmp + 4));
}
}
Napomena: Na sistemu na kojem testiram sizeof(int) = 4, odatle onaj &tmp+4 u printf funkciji. Taj poziv naravno tu neće stajati jednom kad funkcija proradi kako treba.
Unaprijed zahvaljujem!
Marko
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.