fix: use after free, ISO C warning
This commit is contained in:
@@ -17,25 +17,25 @@ int init_state() {
|
|||||||
memset(state->registers, 0, sizeof(s_registers));
|
memset(state->registers, 0, sizeof(s_registers));
|
||||||
state->args = malloc(sizeof(s_arguments));
|
state->args = malloc(sizeof(s_arguments));
|
||||||
if (state->args == NULL) {
|
if (state->args == NULL) {
|
||||||
free(state);
|
|
||||||
free(state->registers);
|
free(state->registers);
|
||||||
|
free(state);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
state->args->arg1 = malloc(sizeof(char) * MAX_ARG_SIZE);
|
state->args->arg1 = malloc(sizeof(char) * MAX_ARG_SIZE);
|
||||||
state->args->arg2 = malloc(sizeof(char) * MAX_ARG_SIZE);
|
state->args->arg2 = malloc(sizeof(char) * MAX_ARG_SIZE);
|
||||||
if (state->args->arg1 == NULL || state->args->arg2 == NULL) {
|
if (state->args->arg1 == NULL || state->args->arg2 == NULL) {
|
||||||
free(state);
|
|
||||||
free(state->registers);
|
free(state->registers);
|
||||||
|
free(state);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
memset(state->args->arg1, 0, sizeof(char) * MAX_ARG_SIZE);
|
memset(state->args->arg1, 0, sizeof(char) * MAX_ARG_SIZE);
|
||||||
memset(state->args->arg2, 0, sizeof(char) * MAX_ARG_SIZE);
|
memset(state->args->arg2, 0, sizeof(char) * MAX_ARG_SIZE);
|
||||||
state->labels_values = malloc(sizeof(int) * MAX_LABELS);
|
state->labels_values = malloc(sizeof(int) * MAX_LABELS);
|
||||||
if (state->labels_values == NULL) {
|
if (state->labels_values == NULL) {
|
||||||
free(state);
|
|
||||||
free(state->registers);
|
free(state->registers);
|
||||||
free(state->args->arg1);
|
free(state->args->arg1);
|
||||||
free(state->args->arg2);
|
free(state->args->arg2);
|
||||||
|
free(state);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
memset(state->labels_values, 0, sizeof(int) * MAX_LABELS);
|
memset(state->labels_values, 0, sizeof(int) * MAX_LABELS);
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
#include "fmemopen.h"
|
||||||
|
|
||||||
|
typedef int make_iso_compilers_happy; //...
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include "fmemopen.h"
|
|
||||||
#include <share.h>
|
#include <share.h>
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#ifdef _WIN32
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
FILE *fmemopen(void *buf, size_t len, const char *type);
|
FILE *fmemopen(void *buf, size_t len, const char *type);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user