× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: Re: Working lp5250d last week, now refuses
  • From: Scott Klement <klemscot@xxxxxxxxxxxx>
  • Date: Wed, 3 May 2000 17:09:57 -0500 (CDT)


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;

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.