Changeset 1707

Show
Ignore:
Timestamp:
11/11/08 00:16:55 (2 months ago)
Author:
common
Message:

libemu

  • gcc 4.3.2 enforces return value checks for (v)asprintf, system, f(read|write), in most cases (ran out of memory) we can just bail out with exit(-1)
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libemu/trunk/CHANGES

    r1429 r1707  
    11                Changelog for libemu 
     2xx.11.2008 
     3 
     4 
    25 
    3619.09.2007 libemu 0.1.0 
    47 - initial release 
    58 
     9 
  • libemu/trunk/configure.ac

    r1684 r1707  
    55 
    66AC_PREREQ(2.59) 
    7 AC_INIT([libemu], [0.1.0], [nepenthesdev@gmail.com]) 
    8 AM_INIT_AUTOMAKE([libemu], [0.1.0]) 
     7AC_INIT([libemu], [0.2.0], [nepenthesdev@gmail.com]) 
     8AM_INIT_AUTOMAKE([libemu], [0.2.0]) 
    99AC_REVISION([$Id$]) 
    1010 
  • libemu/trunk/include/emu/emu_cpu_data.h

    r1705 r1707  
    242242#define DWORD_FROM_WORDS(to, upper, lower) \ 
    243243memcpy(&to,&lower,2); \ 
    244 memcpy(&to+2,&lower,2);  
     244memcpy(((char *)&to)+2,&lower,2);  
    245245 
    246246#define QWORD_FROM_DWORDS(to, upper, lower) \ 
    247247memcpy(&to,&lower,4); \ 
    248 memcpy(&to+4,&lower,4);  
     248memcpy(((char *)&to)+4,&lower,4);  
    249249 
    250250 
  • libemu/trunk/src/emu.c

    r1346 r1707  
    114114        char            *message; 
    115115        va_start(ap, format); 
    116         vasprintf(&message, format, ap); 
     116        int va = vasprintf(&message, format, ap); 
    117117        va_end(ap); 
     118 
     119        if (va == -1) 
     120                return; 
    118121 
    119122        e->errorstr = message; 
  • libemu/trunk/src/emu_log.c

    r1684 r1707  
    8383 
    8484        va_start(ap, format); 
    85         vasprintf(&message, format, ap); 
     85        int va = vasprintf(&message, format, ap); 
    8686        va_end(ap); 
     87 
     88        if (va == -1) 
     89                message = strdup("failed to allocate memory in vasprintf\n"); 
    8790 
    8891        el->logcb(e, level, message); 
  • libemu/trunk/src/emu_string.c

    r1317 r1707  
    7575 
    7676        va_start(ap, format); 
    77         vasprintf(&message, format, ap); 
     77        int va = vasprintf(&message, format, ap); 
    7878        va_end(ap); 
     79 
     80        if (va == -1) 
     81                exit(-1); 
    7982 
    8083        emu_string_append_char(s, message); 
  • libemu/trunk/src/environment/emu_profile.c

    r1684 r1707  
    978978 
    979979                        uint32_t x = 0; 
    980                         fread(&x, 4, 1, f); 
    981                         emu_profile_argument_add_port(profile, argtype, argname, x); 
     980                        if ( fread(&x, 4, 1, f) == 4) 
     981                               emu_profile_argument_add_port(profile, argtype, argname, x); 
    982982                } 
    983983                break; 
     
    986986                { 
    987987                        uint32_t x = -1; 
    988                 fread(&x, 4, 1, f); 
    989                         emu_profile_argument_add_ip(profile, argtype, argname, x); 
     988                if ( fread(&x, 4, 1, f) == 4) 
     989                               emu_profile_argument_add_ip(profile, argtype, argname, x); 
    990990                } 
    991991                break; 
  • libemu/trunk/testsuite/instrtest.c

    r1639 r1707  
    794794                        } 
    795795 
    796                         fwrite(use,strlen(use),1,f); 
    797                         fwrite(tests[i].instr,1,strlen(tests[i].instr),f); 
     796                        int fr = 0; 
     797                        fr = fwrite(use,strlen(use),1,f); 
     798                        fr = fwrite(tests[i].instr,1,strlen(tests[i].instr),f); 
    798799                        fclose(f); 
    799                         system("cd /tmp/; nasm foo.S"); 
     800                        fr = system("cd /tmp/; nasm foo.S"); 
    800801                        f=fopen("/tmp/foo","r"); 
    801802                        if (f == NULL) 
     
    810811                        tests[i].code = malloc(tests[i].codesize); 
    811812                        fseek(f,0,SEEK_SET); 
    812                         fread(tests[i].code,1,tests[i].codesize,f); 
     813                        fr = fread(tests[i].code,1,tests[i].codesize,f); 
    813814                        fclose(f); 
    814815 
  • libemu/trunk/tools/sctest/userhooks.c

    r1706 r1707  
    251251                                dup2(err[0], fileno(stderr)); 
    252252 
     253                                int sys = -1; 
    253254                                struct emu_hashtable_item *ehi = emu_hashtable_search(opts.override.commands.commands, "cmd"); 
    254255                                if ( ehi != NULL ) 
    255                                         system((char *)ehi->value); 
     256                                        sys = system((char *)ehi->value); 
    256257                                else 
    257                                         system("/bin/sh -c \"cd ~/.wine/drive_c/; wine 'c:\\windows\\system32\\cmd_orig.exe' \""); 
     258                                        sys = system("/bin/sh -c \"cd ~/.wine/drive_c/; wine 'c:\\windows\\system32\\cmd_orig.exe' \""); 
    258259 
    259260                                close(in[1]); 
     
    261262                                close(err[0]); 
    262263 
    263                                 printf("process ended!\n"); 
     264                                printf("process ended (%i)!\n", sys); 
    264265                                exit(EXIT_SUCCESS); 
    265266                        } else 
     
    291292                                        int action = select(highsock+1, &socks, NULL, NULL, &timeout); 
    292293//                                      printf("select %i\n",action); 
    293  
     294                                        int written = -1; 
    294295                                        if ( action > 0 ) 
    295296                                        { 
     
    297298                                                { 
    298299                                                        int size = read(psiStartInfo->hStdInput, buf, 1024); 
     300                                                         
    299301//                                                      printf("read %i in '%.*s'\n",size,size,buf); 
    300302                                                        if ( size > 0 ) 
    301                                                                 write(in[0], buf, size); 
     303                                                                written = write(in[0], buf, size); 
    302304                                                        else 
    303305                                                                goto exit_now; 
     
    309311//                                                      printf("read %i out '%.*s'\n",size,size,buf); 
    310312                                                        if ( size > 0 ) 
    311                                                                 write(psiStartInfo->hStdOutput, buf, size); 
     313                                                                written = write(psiStartInfo->hStdOutput, buf, size); 
    312314                                                        else 
    313315                                                                goto exit_now; 
     
    319321//                                                      printf("read %i err '%.*s'\n",size,size,buf); 
    320322                                                        if ( size > 0 ) 
    321                                                                 write(psiStartInfo->hStdOutput, buf, size); 
     323                                                                written = write(psiStartInfo->hStdOutput, buf, size); 
    322324                                                        else 
    323325                                                                goto exit_now; 
     
    539541 
    540542        char *localfile; 
    541         asprintf(&localfile, "/tmp/%s-XXXXXX",filename); 
     543 
     544        if ( asprintf(&localfile, "/tmp/%s-XXXXXX",filename) == -1) 
     545                exit(-1); 
     546 
    542547        int fd = mkstemp(localfile); 
    543548        close(fd); 
     
    697702 
    698703        char *localfile; 
    699         asprintf(&localfile, "/tmp/%s-XXXXXX",lpFileName); 
     704 
     705        if ( asprintf(&localfile, "/tmp/%s-XXXXXX",lpFileName) == -1) 
     706                exit(-1); 
     707 
    700708        int fd = mkstemp(localfile); 
    701709        close(fd); 
     
    723731*/ 
    724732 
     733        int written = -1; 
    725734        va_list vl; 
    726735        va_start(vl, hook); 
     
    735744 
    736745        if (nf != NULL) 
    737                 fwrite(lpBuffer, nNumberOfBytesToWrite, 1, nf->real_file); 
     746                written = fwrite(lpBuffer, nNumberOfBytesToWrite, 1, nf->real_file); 
    738747        else 
    739748                printf("shellcode tried to write data to not existing handle\n");