审查生成的自有文本消息

来自 C 结构体、联合体与枚举
C23 (GCC 13.3.0) 高级 6分钟 找出 4处问题

审查这段生成代码:它要从不可信输入创建可克隆、拥有文本的消息。

构造有效的拥有型文本消息,报告分配失败,并在不共享所有权的前提下克隆它。

C
#include <stdlib.h>
#include <string.h>
typedef enum { MSG_NUMBER, MSG_TEXT } MessageKind;

typedef struct {
    MessageKind kind;
    union {
        int n;
        char *s;
    } as;
} Message;

Message message_from_text(const char *input, size_t length) {
    Message result = {0};
    result.kind = MSG_TEXT;
    result.as.s = malloc(length + 1u);
    if (result.as.s == NULL) return result;
    memcpy(result.as.s, input, length);
    result.as.s[length] = '\0';
    return result;
}

Message message_copy(Message source) {
    return source;
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误