Changeset 52 for trunk/gui/util


Ignore:
Timestamp:
Aug 17, 2016, 9:31:36 AM (9 years ago)
Author:
Alex Taylor
Message:

Add sanity checks to prevent some exception conditions.

Location:
trunk/gui/util/prntobj
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/util/prntobj/prntobj.c

    r29 r52  
    1010#define INCL_SPLDOSPRINT
    1111#define INCL_SPLERRORS
     12#define INCL_WINSHELLDATA
    1213#include <os2.h>
    1314#include <stdio.h>
     
    1718
    1819#define MAX_DEVICE_NAME     9
     20
     21/* Various defines copied from CUPS.PDR...
     22 */
     23#define STR_LEN_PORTNAME          12
     24#define STR_LEN_INIVAL            256
     25#define STR_LEN_HOSTNAME          64
     26#define STR_LEN_QUEUENAME         64
     27
     28#define APPNAME_LEAD_STR          "PM_"
     29#define APPNAME_PM_PORT_DRIVER    "PM_PORT_DRIVER"
     30#define APPNAME_PM_SPOOLER_PORT   "PM_SPOOLER_PORT"
     31
     32#define KEY_DESCRIPTION           "DESCRIPTION"
     33#define KEY_INITIALIZATION        "INITIALIZATION"
     34#define KEY_TERMINATION           "TERMINATION"
     35#define KEY_PORTDRIVER            "PORTDRIVER"
     36#define KEY_TIMEOUT               "TIMEOUT"
    1937
    2038
     
    87105              pszTitle      = NULL;
    88106    CHAR      szDeviceName[ 9 ] = {0};
    89     USHORT    i, len;
     107    CHAR      szIniApp[ STR_LEN_PORTNAME ] = {0};
     108    CHAR      szIniVal[ STR_LEN_INIVAL ] = {0};
     109    USHORT    i;
    90110    SPLERR    rc;
    91111
     
    104124    pszModel     = argv[ 3 ];
    105125    pszTitle     = argv[ 4 ];
     126    if ( strlen( pszTitle ) > 47 )
     127        pszTitle[ 47 ] = '\0';
     128
     129    // Make sure the specified port exists and has valid settings.
     130    strcpy( szIniApp, APPNAME_LEAD_STR );
     131    strncat( szIniApp, pszPortName, STR_LEN_PORTNAME-1 );
     132    rc = PrfQueryProfileString( HINI_SYSTEMPROFILE, szIniApp,
     133                                KEY_PORTDRIVER, NULL,
     134                                (PVOID) szIniVal, STR_LEN_INIVAL );
     135    if ( rc < 2 ) {
     136        printf("Error: %s does not appear to be a valid port.\n", pszPortName );
     137        return ( 1 );
     138    }
    106139
    107140    // Generate a suitable internal device name
Note: See TracChangeset for help on using the changeset viewer.