In ran into a problem with a game, Dark Age of Camelot, where it locked up after logging into the game. After some tracing it became apparent that the game was trying to read bytes from /dev/random, but due to me working remotely on the computer, not enough entropy was generated which stalled the game.
I was just wondering if it would be acceptable to specifically check for /dev/random in wine_nt_to_unix_file_name() and turn that into /dev/urandom ?!
Small snippet of the login.dll executable code:
.text:0042C150 sub_42C150 proc near ; CODE XREF: sub_4267E0+5B0C p .text:0042C150 .text:0042C150 arg_0 = dword ptr 8 .text:0042C150 arg_4 = dword ptr 0Ch .text:0042C150 .text:0042C150 push esi .text:0042C151 push offset aRb ; "rb" .text:0042C156 push offset aDevRandom ; "/dev/random" .text:0042C15B call _fopen .text:0042C160 mov esi, eax .text:0042C162 add esp, 8 .text:0042C165 test esi, esi .text:0042C167 jz short loc_42C185 .text:0042C169 push 0 ; size_t .text:0042C16B push 4 ; int .text:0042C16D push 0 ; char * .text:0042C16F push esi ; FILE * .text:0042C170 call _setvbuf .text:0042C175 add esp, 10h .text:0042C178 test eax, eax .text:0042C17A jz short loc_42C189 .text:0042C17C push esi ; FILE * .text:0042C17D call _fclose .text:0042C182 add esp, 4 .text:0042C185 .text:0042C185 loc_42C185: ; CODE XREF: sub_42C150+17 j .text:0042C185 xor eax, eax .text:0042C187 pop esi .text:0042C188 retn