fix: 修复了部分问题:

信号处理器安全	移除了信号处理器中的 cleanup_terminal() 调用
线程取消安全	添加 pthread_cleanup_push/pop 确保终端恢复
Socket 竞态条件	添加 send_message_safe() 和 get_socket_fd() 辅助函数
资源泄漏	使用 goto cleanup 统一错误处理路径
poll 事件检查	添加 POLLERR/POLLHUP/POLLNVAL 检查
鼠标解析安全	添加临时缓冲区和数值范围验证
条件变量改进	支持 CLOCK_MONOTONIC
载荷验证	添加写入字节数验证
注释完善	添加详细的函数和模块文档
This commit is contained in:
QCQCQC@Opi5 2025-12-13 17:27:05 +08:00
parent 63b7398f56
commit a1f79164b7
2 changed files with 788 additions and 220 deletions

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,52 @@
#define SOCKET_PATH "/var/run/bash-smart.sock" #define SOCKET_PATH "/var/run/bash-smart.sock"
#define MAX_BUF_SIZE 4096 #define MAX_BUF_SIZE 4096
// 函数声明 /**
int seeking_solutions(const char *filename, char *const argv[], char *const envp[], const char *logPath, int *output_fd); * @brief
*
*
* 1. Unix Domain Socket
* 2.
* 3. 线
* 4. 退
*
* 线
* - 线 output_fd
* - 线 SIGWINCH
* - 线
*
*
* - SIGWINCH
* - SIGINT/SIGTERM退
*
* @param filename
* @param argv NULL
* @param envp NULL
* @param logPath /
* @param output_fd STDOUT_FILENO
*
* @return 0 -1
*
* @note
* 退
* @note
*
* @code
* // 使用示例
* int output_fd = STDOUT_FILENO;
* char* argv[] = {"my_command", "--option", NULL};
* extern char** environ;
*
* int result = seeking_solutions("/usr/bin/my_command",
* argv, environ,
* "/tmp/error.log",
* &output_fd);
* if (result < 0) {
* fprintf(stderr, "连接失败\n");
* }
* @endcode
*/
int seeking_solutions(const char* filename, char* const argv[],
char* const envp[], const char* logPath, int* output_fd);
#endif // EXEC_SOCKET_H #endif // EXEC_SOCKET_H