File: 0135-replace_gets.patch

package info (click to toggle)
xbase64 3.1.2-13
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 3,284 kB
  • sloc: cpp: 14,554; sh: 8,612; makefile: 112
file content (66 lines) | stat: -rw-r--r-- 2,024 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Description: Replace deprecated gets() with std::cin.getline()
Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=841626
Last-Update: 2016-10-22
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
Index: xbase64-3.1.2/bin/dbfutil1.cpp
===================================================================
--- xbase64-3.1.2.orig/bin/dbfutil1.cpp
+++ xbase64-3.1.2/bin/dbfutil1.cpp
@@ -38,6 +38,7 @@
 */
 
 #include <xbase64/xbase64.h>
+#include <limits>
 
 // next lines are helpful for debugging purposes
 /*
@@ -153,11 +154,16 @@ void MyClass::FilterMenu()
 /************************************************************************/
 void  MyClass::SetFilter()
 {
-  char Expression[512];
-  memset( Expression, 0x00, 512 );
+  constexpr int SIZE = 512;
+
+  char Expression[SIZE];
+  memset( Expression, 0x00, SIZE );
   while( !strlen( Expression )){
     std::cout << "Enter filter expression (like AMOUNT<5)" << std::endl;
-    gets( Expression );
+
+    std::cin.getline(Expression, SIZE-1);
+    Expression[SIZE-1] = '\0';
+    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
   }
   if( xbf )
     delete xbf;
@@ -235,19 +241,24 @@ void  MyClass::LastFilterRec()
 #ifdef XB_EXPRESSIONS
 void MyClass::ProcessExpression()
 {
-  char exprsn[256];
+  constexpr int SIZE = 256;
+
+  char exprsn[SIZE];
   char type;
   xbExpn *exp;            // expression
   xbShort rc; 
   int debug = 0;
-  memset( exprsn, 0x00, 256 );
+  memset( exprsn, 0x00, SIZE );
 
   std::cout << "Enter expression string or HELP" << std::endl;
 
   while( !strstr( exprsn, "QUIT" ) && !strstr( exprsn, "quit" )){
 
     std::cout << ">";
-    gets( exprsn );
+
+    std::cin.getline(exprsn, SIZE-1);
+    exprsn[SIZE-1] = '\0';
+    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
 
     if( strstr( exprsn, "HELP" ) || strstr( exprsn, "help" )){
       std::cout << "** Command Help ***"    << std::endl << std::endl;