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