Skip to content

[Bug] NUL /0字符在工作流里面没有被过滤 #6722

Description

@zhainanshidai

Contact Information

No response

MaxKB Version

v2.4.1、v2.10.5

Problem Description

定义一个工作流:
Image
测试:

Image 函数换一下: Image Image

再换成这个:报错

Image

再想办法绕过去:

Image Image

以上几种情况均为2.10.5报错
PostgreSQL 内部 C 语言字符串以 \0 作为结束标记,因此文本字段禁止原生保存 ASCII NUL (0x00) 字符。只要字符串里存在 \0,执行 INSERT / UPDATE 就抛出该异常。

上面的异常估计是后面版本改了,再早期版本2.4.2中的报错是:
PostgreSQL text fields cannot contain NUL (0x00) bytes

在工具中也是:

Image

能否在工作流、知识库、工具等工作流对外输出提供服务的地方,对这些空字符做一下过滤?使得存在也不报错?(比如之前过滤掉再入库)

否则函数、工作流某个节点等地方从上游有个这种字符过来,或者是在某个节点弄了这个字符,导致用户使用起来报错,偶然又不报。

手动分析也不合理,目前复现出来的工作流有100多个节点,不可能手动分析的,如果做不到,能不能加一个日志记录一下,到底哪个细节节点(比如执行到xx工具)出来的?

Steps to Reproduce

The expected correct result

No response

Related log output

Additional Information

No response

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions