Print this page
11506 smatch resync
@@ -45,10 +45,14 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+/*
+ * Copyright 2019 Joyent, Inc.
+ */
+
#include "ficl.h"
#if FICL_ROBUST >= 2
#define FICL_VM_CHECK(vm) \
FICL_VM_ASSERT(vm, (*(vm->ip - 1)) == vm->runningWord)
@@ -2163,12 +2167,12 @@
{
ficlString s;
char *pad = (char *)vm->pad;
s = ficlVmGetWord(vm);
- if (FICL_STRING_GET_LENGTH(s) > FICL_PAD_SIZE)
- FICL_STRING_SET_LENGTH(s, FICL_PAD_SIZE);
+ if (FICL_STRING_GET_LENGTH(s) >= FICL_PAD_SIZE)
+ FICL_STRING_SET_LENGTH(s, FICL_PAD_SIZE - 1);
(void) strncpy(pad, FICL_STRING_GET_POINTER(s),
FICL_STRING_GET_LENGTH(s));
pad[FICL_STRING_GET_LENGTH(s)] = '\0';
return ((int)(FICL_STRING_GET_LENGTH(s)));