Recommanded Free YOUTUBE Lecture: Dockerizing with Spring Boot Hello World

설명

readlink 함수 자체의 예제만으로는 너무 단순해서 좀 확장한 예제를 만들어 봤습니다. 고정폭 버퍼를 사용하여 버퍼오버플로우 취약점을 남겨두는것보다. 다음과 같이 가변적인 버퍼가 되도록 구현하는게 당연히 좋겠죠?

readlink 사용시 가장 주의할것은 readlink 의 buffer 에는 NUL 을 붙여주지 않는다는 점일것입니다. 이것만 주의하면 꽤 유용하겠죠.

사용방법

코드

/*
Copyright (C) Information Equipment co.,LTD.
All rights reserved.
Code by JaeHyuk Cho <mailto:minzkn@infoeq.com>
CVSTAG="$Header: /usr/local/mutihost/joinc/modules/moniwiki/data/text/RCS/Code_2fC_2freadlink,v 1.2 2011/02/23 12:07:58 root Exp root $"
*/
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#if 0 /* recommand */
#define def_readlink_start_buffer (256)
#define def_readlink_expansion_buffer (8)
#else /* for test */
#define def_readlink_start_buffer (1)
#define def_readlink_expansion_buffer (1)
#endif
char *mz_readlink(const char *s_path)
{
char *s_result;
size_t s_buffer_size = (size_t)(def_readlink_start_buffer); /* start buffer */
int s_replace_bytes;
do
{
s_result = (char *)malloc(s_buffer_size);
if(s_result == ((char *)0))break; /* error */
s_replace_bytes = readlink(s_path, s_result, s_buffer_size);
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

변경사항

2005/08/13