@@ -73,6 +73,9 @@ int TSnap7MicroClient::opReadArea()
7373 // First check : params bounds
7474 if ((Job.Number <0 ) || (Job.Number >65535 ) || (Job.Start <0 ) || (Job.Amount <1 ))
7575 return errCliInvalidParams;
76+ // Second check : transport size
77+ if ((Job.WordLen ==S7WLBit) && (Job.Amount >1 ))
78+ return errCliInvalidTransportSize;
7679 // Request Params size
7780 RPSize =sizeof (TReqFunReadItem)+2 ; // 1 item + FunRead + ItemsCount
7881 // Setup pointers (note : PDUH_out and PDU.Payload are the same pointer)
@@ -181,6 +184,9 @@ int TSnap7MicroClient::opWriteArea()
181184 // First check : params bounds
182185 if ((Job.Number <0 ) || (Job.Number >65535 ) || (Job.Start <0 ) || (Job.Amount <1 ))
183186 return errCliInvalidParams;
187+ // Second check : transport size
188+ if ((Job.WordLen ==S7WLBit) && (Job.Amount >1 ))
189+ return errCliInvalidTransportSize;
184190
185191 RHSize =sizeof (TS7ReqHeader)+ // Request header
186192 2 + // FunWrite+ItemCount (of TReqFunWriteParams)
@@ -382,7 +388,11 @@ int TSnap7MicroClient::opReadMultiVars()
382388 IsoSize=RPSize+sizeof (TS7ReqHeader);
383389 if (IsoSize>PDULength)
384390 return errCliSizeOverPDU;
385- Result=isoExchangeBuffer (0 ,IsoSize);
391+ Result=isoExchangeBuffer (0 ,IsoSize);
392+
393+ if (Result!=0 )
394+ return Result;
395+
386396 // Function level error
387397 if (Answer->Error !=0 )
388398 return CpuError (SwapWord (Answer->Error ));
@@ -550,9 +560,13 @@ int TSnap7MicroClient::opWriteMultiVars()
550560 if (IsoSize>PDULength)
551561 return errCliSizeOverPDU;
552562 Result=isoExchangeBuffer (0 ,IsoSize);
553- // Function level error
554- if (Answer->Error !=0 )
555- return CpuError (SwapWord (Answer->Error ));
563+
564+ if (Result!=0 )
565+ return Result;
566+
567+ // Function level error
568+ if (Answer->Error !=0 )
569+ return CpuError (SwapWord (Answer->Error ));
556570
557571 if (ResParams->ItemCount !=ItemsCount)
558572 return errCliInvalidPlcAnswer;
@@ -1198,7 +1212,7 @@ int TSnap7MicroClient::opUpload()
11981212 if (Full)
11991213 {
12001214 opSize=int (Offset);
1201- if (opSize<92 )
1215+ if (opSize<78 )
12021216 Result=errCliInvalidDataSizeRecvd;
12031217 }
12041218 else
0 commit comments