Author Archive
Openssl 쓰는 프로그램 valgrind 돌리기
openssl을 쓰는 프로그램을 valgrind로 그냥 돌리면 잘못했다고 보여주는 것이 너무 많아서 정말로 잘못한 것을 찾을 수 없다. 이 문제를 해결하려면 PURIFY를 정의하고 컴파일한 openssl을 써야한다. 아래에 RHEL에서 어떻게 했는지 적어본다.
1. openssl 소스 rpm 설치
rpm -ivh openssl-0.9.7a-43.16.src.rpm
2. openssl.spec 수정
“make depend” 찾아서 그 위에 아래 내용 추가
RPM_OPT_FLAGS=”$RPM_OPT_FLAGS -DPURIFY”
3. 컴파일
rpmbuild -bc openssl.spec
필요한 패키지가 없다고 하면 설치해주고 다시 컴파일
4. 실행
LD_LIBRARY_PATH=purified_openssl valgrind program_using_openssl
OpenSSL과 select
소켓 통신할 때 시간초과(time out) 처리를 위해 아래와 같이 select 시스템콜을 쓰는 경우가 많다.
fd_set rset;
FD_ZERO(&rset);
FD_SET(fd, &rset);
n = select(fd + 1, &rset, NULL, NULL, &t);
if (n < 0)
/* 오류 처리 */
else if (n == 0)
/* 시간 초과 */
n = read(fd, buf, sizeof(buf));
일반적인 소켓이 아니라 OpenSSL의 BIO을 사용한다면 아래와 같이 하면 된다.
BIO_set_nbio(bio, 1); // non-block socket으로 설정
int num_read = 0;
while ( num_read < size ) {
int n = BIO_read( bio, buf + num_read, size - num_read );
if ( n > 0 ) {
num_read += n;
continue;
}
if ( !BIO_should_retry( bio ) ) {
return -1;
}
fd_set rset;
FD_ZERO(&rset);
fd_set wset;
FD_ZERO(&wset);
if (BIO_should_read(bio)) {
FD_SET(fd, &rset);
} else if (BIO_should_write(bio)) {
FD_SET(fd, &wset);
} else {
return -1;
}
n = select(fd + 1, &rset, &wset, NULL, &t);
if (n <= 0) {
if (n < 0) {
return -1;
} else {
printf("select timed out");
}
}
}
소켓을 OpenSSL BIO로 바꾸려면
소켓을 OpenSSL의 BIO로 바꾸려면 아래와 같이 한다.
BIO* sbio = BIO_new_socket(fd, BIO_CLOSE);
BIO* bio = BIO_new_ssl(ctx, 1);
SSL* ssl;
BIO_get_ssl(bio, &ssl);
SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
BIO_push(bio, sbio);
// status = BIO_do_handshake(bio);
wxWidgets 컴파일
C:\wxWidgets-2.8.7\build\msw>\mingw\bin\mingw32-make -f makefile.gcc UNICODE=1
아이폰 해킹
아이폰의 출시 이후 폭발적인 반응에 대해 디자인 때문이라는 의견과 소프트웨어 때문이라는 의견 등 여러 가지 분석이 나오고 있다. 개인적으로는 소프트웨어쪽에 공감한다. 아쉬운 것은 사용자들이 직접 만든 소프트웨어를 공식적으로는 설치할 수 없다는것이다. 물론 아이팟에 리눅스를 설치하는 아이팟리눅스 같은 프로젝트가 생길 것으로 예상한다. 이와는 조금 다른 얘기지만 AT&T가 아닌 다른 통신사에서 사용하기 위한 시도가 벌써 진행중이라고 한다.
HHK
HHK lite 2를 구입했습니다. 공간을 적게 차지하는 것이 가장 크게 와닫는 장점입니다. 단점은 일반 키보드에서 자주 쓰던 키가 없어서 Fn키 조합으로 써야하니 불편합니다. 아직 채 24시간도 못써봤으니 10년 이상 써온 일반 키보드와 비교하긴 너무 이른 감이 있습니다. 과연 10년쯤 후에는 어떻게 생각할까요?
댓글 남기기
댓글 남기기
댓글 남기기