Mike...

This patch is what I'm using (at the moment) it probably could be done
better, but maybe its a start... :)

Just do:

cd tn5250/src
patch < lp5250d.patch

Thanks!


On Wed, 3 May 2000, Mike Madore wrote:

> Hi,
> 
> > Perhaps these parameters should be allocated with malloc(), based on
> > the size of the arguments, so that we don't have this type of overflow?
> > I could write up a patch if you'd like...
> 
> Definately.  I'll put it on ny TODO list.
> 
> Mike
> 
--- lp5250d.orig        Wed May  3 16:30:08 2000
+++ lp5250d.c   Wed May  3 16:51:27 2000
@@ -42,16 +42,16 @@
 Tn5250PrintSession *printsess = NULL;
 Tn5250Stream *stream = NULL;
 
-char remotehost[20];
-char sessionname[20];
-char transformname[20];
-char outputcommand[30];
-char *mapname = "37";
-char logname[20] = "";
+char *remotehost = NULL;
+char *sessionname = NULL;
+char *transformname = NULL;
+char *outputcommand = NULL;
+char *mapname = NULL;
+char *logname = NULL;
 
 int main(int argc, char *argv[])
 {
-   
+
 
    if (parse_options(argc, argv) < 0)
       syntax();
@@ -105,27 +105,35 @@
 static int parse_options(int argc, char *argv[])
 {
    int arg;
+
+   logname = outputcommand = sessionname = transformname = remotehost = "\0";
+   mapname = "37";
    
    while ((arg = getopt(argc, argv, "t:m:s:T:P:Vwy:")) != EOF) {
       switch (arg) {
 #ifndef NDEBUG
       case 't':
+         logname = malloc(strlen(optarg)+1);
          strcpy(logname,optarg);
          break;
 #endif         
       case 'm':
+         mapname = malloc(strlen(optarg)+1);
         mapname = optarg;
         break;
 
       case 'P':
+         outputcommand = malloc(strlen(optarg)+1);
         strcpy(outputcommand,optarg);
         break;
 
       case 's':
+         sessionname = malloc(strlen(optarg)+1);
         strcpy(sessionname,optarg);
         break;
 
       case 'T':
+         transformname = malloc(strlen(optarg)+1);
         strcpy(transformname,optarg);
         break;
 
@@ -141,6 +149,7 @@
 
    if (optind >= argc)
       return -1;
+   remotehost = malloc(strlen(argv[optind])+1);
    strcpy(remotehost,argv[optind++]);
    if (optind != argc)
       return -1;

Reply via email to