commit 7d4b8b76068160afe9acd09896866cd46912104d
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Mon Mar 13 18:16:27 2017 +0100

    Only accept non-negative lyxscale parameters
    
    Since lyxscale is unsigned, a negative value would lead to a very
    large positive value.
    
    Spotted by coverity.
---
 src/insets/InsetExternal.cpp |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/insets/InsetExternal.cpp b/src/insets/InsetExternal.cpp
index 3b79249..a88769b 100644
--- a/src/insets/InsetExternal.cpp
+++ b/src/insets/InsetExternal.cpp
@@ -289,17 +289,23 @@ bool InsetExternalParams::read(Buffer const & buffer, 
Lexer & lex)
                        filename = buffer.getReferencedFileName(name);
                        break;
                }
-               
+
                case EX_DISPLAY: {
                        lex.next();
                        display = lex.getString() != "false";
                        break;
                }
 
-               case EX_LYXSCALE:
+               case EX_LYXSCALE: {
                        lex.next();
-                       lyxscale = lex.getInteger();
+                       int const ls = lex.getInteger();
+                       // negative values are not accepted.
+                       if (ls >= 0)
+                               lyxscale = ls;
+                       else
+                               lex.printError("ExternalInset::read: Wrong 
lyxscale: $$Token");
                        break;
+               }
 
                case EX_DRAFT:
                        draft = true;
@@ -379,8 +385,6 @@ bool InsetExternalParams::read(Buffer const & buffer, Lexer 
& lex)
 
        if (lyxerr.debugging(Debug::EXTERNAL)) {
                lyxerr  << "InsetExternalParams::read:\n";
-               // false positive
-               // coverity[NEGATIVE_RETURNS]
                write(buffer, lyxerr);
        }
 

Reply via email to