Переглянути джерело

Solve null-termination problems (with SA_NSDataExtensions)

IRCClient should no longer have any issues with null termination
of strings (expecting terminated strings and not getting them,
or vice versa).
master
achmizs 10 роки тому
джерело
коміт
cf25915c92

+ 1
- 0
.gitignore Переглянути файл

@@ -28,5 +28,6 @@ xcuserdata
*.ipa

libirc*
NSData*

*~

+ 20
- 4
IRCClient.xcodeproj/project.pbxproj Переглянути файл

@@ -7,6 +7,8 @@
objects = {

/* Begin PBXBuildFile section */
8657E6DD1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */; };
8657E6DE1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */; };
866EF0101C25FF07006303A1 /* libircclient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 866EF00F1C25FF07006303A1 /* libircclient.a */; };
868374A91C24E774005B97E5 /* IRCClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 868374A81C24E774005B97E5 /* IRCClient.h */; settings = {ATTRIBUTES = (Public, ); }; };
86B6232C1C21FD7C00D6E3AF /* README in Resources */ = {isa = PBXBuildFile; fileRef = 86B6232B1C21FD7C00D6E3AF /* README */; };
@@ -25,6 +27,8 @@
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+SA_NSDataExtensions.h"; sourceTree = "<group>"; };
8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+SA_NSDataExtensions.m"; sourceTree = "<group>"; };
866EF00F1C25FF07006303A1 /* libircclient.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libircclient.a; sourceTree = "<group>"; };
868374A81C24E774005B97E5 /* IRCClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IRCClient.h; sourceTree = "<group>"; };
86B6232B1C21FD7C00D6E3AF /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
@@ -56,6 +60,15 @@
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
8657E6DA1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions */ = {
isa = PBXGroup;
children = (
8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */,
8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */,
);
path = "NSData+SA_NSDataExtensions";
sourceTree = "<group>";
};
86D7849F1C24C39F00C7458D /* libircclient */ = {
isa = PBXGroup;
children = (
@@ -74,6 +87,7 @@
children = (
868374A81C24E774005B97E5 /* IRCClient.h */,
86D7849F1C24C39F00C7458D /* libircclient */,
8657E6DA1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions */,
86B6232B1C21FD7C00D6E3AF /* README */,
86F2EFE81C21F73600B033A4 /* IRCClient */,
86F2EFE71C21F73600B033A4 /* Products */,
@@ -116,6 +130,7 @@
86D784A61C24C39F00C7458D /* libirc_errors.h in Headers */,
86F2EFF91C21F81900B033A4 /* IRCClientChannel.h in Headers */,
86F2EFFB1C21F81900B033A4 /* IRCClientChannelDelegate.h in Headers */,
8657E6DD1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h in Headers */,
86F2EFFC1C21F81900B033A4 /* IRCClientSession.h in Headers */,
86D784A71C24C39F00C7458D /* libirc_events.h in Headers */,
86D784A91C24C39F00C7458D /* libirc_rfcnumeric.h in Headers */,
@@ -193,6 +208,7 @@
buildActionMask = 2147483647;
files = (
86F2EFFD1C21F81900B033A4 /* IRCClientSession.m in Sources */,
8657E6DE1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m in Sources */,
86F2EFFA1C21F81900B033A4 /* IRCClientChannel.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -237,7 +253,7 @@
"DEBUG=1",
"$(inherited)",
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
@@ -292,7 +308,7 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
@@ -325,7 +341,7 @@
DYLIB_CURRENT_VERSION = 2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
@@ -364,7 +380,7 @@
DYLIB_CURRENT_VERSION = 2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;

+ 17
- 16
IRCClient/IRCClientChannel.m Переглянути файл

@@ -19,6 +19,7 @@

#import "IRCClientChannel.h"
#import "IRCClientChannel_Private.h"
#import "NSData+SA_NSDataExtensions.h"

/*********************************************/
#pragma mark IRCClientChannel private category
@@ -93,22 +94,22 @@

- (int)part
{
return irc_cmd_part(_irc_session, _name.bytes);
return irc_cmd_part(_irc_session, _name.SA_terminatedCString);
}

- (int)invite:(NSString *)nick
{
return irc_cmd_invite(_irc_session, nick.UTF8String, _name.bytes);
return irc_cmd_invite(_irc_session, nick.UTF8String, _name.SA_terminatedCString);
}

- (int)refreshNames
{
return irc_cmd_names(_irc_session, _name.bytes);
return irc_cmd_names(_irc_session, _name.SA_terminatedCString);
}

- (void)setChannelTopic:(NSString *)newTopic
{
irc_cmd_topic(_irc_session, _name.bytes, [newTopic cStringUsingEncoding:_encoding]);
irc_cmd_topic(_irc_session, _name.SA_terminatedCString, [newTopic cStringUsingEncoding:_encoding]);
}

- (int)setMode:(NSString *)mode params:(NSString *)params
@@ -118,32 +119,32 @@
if(params != nil && params.length > 0)
[modeString appendFormat:@" %@", params];
return irc_cmd_channel_mode(_irc_session, _name.bytes, modeString.UTF8String);
return irc_cmd_channel_mode(_irc_session, _name.SA_terminatedCString, modeString.UTF8String);
}

- (int)message:(NSString *)message
{
return irc_cmd_msg(_irc_session, _name.bytes, [message cStringUsingEncoding:_encoding]);
return irc_cmd_msg(_irc_session, _name.SA_terminatedCString, [message cStringUsingEncoding:_encoding]);
}

- (int)action:(NSString *)action
{
return irc_cmd_me(_irc_session, _name.bytes, [action cStringUsingEncoding:_encoding]);
return irc_cmd_me(_irc_session, _name.SA_terminatedCString, [action cStringUsingEncoding:_encoding]);
}

- (int)notice:(NSString *)notice
{
return irc_cmd_notice(_irc_session, _name.bytes, [notice cStringUsingEncoding:_encoding]);
return irc_cmd_notice(_irc_session, _name.SA_terminatedCString, [notice cStringUsingEncoding:_encoding]);
}

- (int)kick:(NSString *)nick reason:(NSString *)reason
{
return irc_cmd_kick(_irc_session, nick.UTF8String, _name.bytes, [reason cStringUsingEncoding:_encoding]);
return irc_cmd_kick(_irc_session, nick.UTF8String, _name.SA_terminatedCString, [reason cStringUsingEncoding:_encoding]);
}

- (int)ctcpRequest:(NSData *)request
{
return irc_cmd_ctcp_request(_irc_session, _name.bytes, request.bytes);
return irc_cmd_ctcp_request(_irc_session, _name.SA_terminatedCString, request.SA_terminatedCString);
}

/****************************/
@@ -157,7 +158,7 @@

- (void)userParted:(NSString *)nick withReason:(NSData *)reason us:(BOOL)wasItUs
{
NSString* reasonString = [[NSString alloc] initWithData:reason encoding:_encoding];
NSString* reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding];
[_delegate userParted:nick withReason:reasonString us:wasItUs];
}

@@ -170,31 +171,31 @@
{
_topic = topic;
NSString* topicString = [[NSString alloc] initWithData:_topic encoding:_encoding];
NSString* topicString = [NSString stringWithCString:topic.SA_terminatedCString encoding:_encoding];
[_delegate topicSet:topicString by:nick];
}

- (void)userKicked:(NSString *)nick withReason:(NSData *)reason by:(NSString *)byNick us:(BOOL)wasItUs
{
NSString* reasonString = [[NSString alloc] initWithData:reason encoding:_encoding];
NSString* reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding];
[_delegate userKicked:nick withReason:reasonString by:byNick us:wasItUs];
}

- (void)messageSent:(NSData *)message byUser:(NSString *)nick
{
NSString* messageString = [[NSString alloc] initWithData:message encoding:_encoding];
NSString* messageString = [NSString stringWithCString:message.SA_terminatedCString encoding:_encoding];
[_delegate messageSent:messageString byUser:nick];
}

- (void)noticeSent:(NSData *)notice byUser:(NSString *)nick
{
NSString* noticeString = [[NSString alloc] initWithData:notice encoding:_encoding];
NSString* noticeString = [NSString stringWithCString:notice.SA_terminatedCString encoding:_encoding];
[_delegate noticeSent:noticeString byUser:nick];
}

- (void)actionPerformed:(NSData *)action byUser:(NSString *)nick
{
NSString* actionString = [[NSString alloc] initWithData:action encoding:_encoding];
NSString* actionString = [NSString stringWithCString:action.SA_terminatedCString encoding:_encoding];
[_delegate actionPerformed:actionString byUser:nick];
}


+ 37
- 36
IRCClient/IRCClientSession.m Переглянути файл

@@ -24,6 +24,7 @@
#import "IRCClientSession.h"
#import "IRCClientChannel.h"
#import "IRCClientChannel_Private.h"
#import "NSData+SA_NSDataExtensions.h"
#include "string.h"

#pragma mark - Callback function declarations
@@ -163,7 +164,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha

- (int)connect;
{
return irc_connect(_irc_session, _server.UTF8String, (unsigned short) _port, (_password.length > 0 ? _password.bytes : NULL), _nickname.UTF8String, _username.UTF8String, _realname.UTF8String);
return irc_connect(_irc_session, _server.UTF8String, (unsigned short) _port, (_password.length > 0 ? _password.SA_terminatedCString : NULL), _nickname.UTF8String, _username.UTF8String, _realname.UTF8String);
}

- (void)disconnect
@@ -195,12 +196,12 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha

- (int)sendRaw:(NSData *)message
{
return irc_send_raw(_irc_session, message.bytes);
return irc_send_raw(_irc_session, message.SA_terminatedCString);
}

- (int)quit:(NSData *)reason
{
return irc_cmd_quit(_irc_session, reason.bytes);
return irc_cmd_quit(_irc_session, reason.SA_terminatedCString);
}

- (int)join:(NSData *)channel key:(NSData *)key
@@ -208,14 +209,14 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha
NSLog(@"Joining %@", channel);
if (!key || !key.length > 0)
return irc_cmd_join(_irc_session, channel.bytes, NULL);
return irc_cmd_join(_irc_session, channel.SA_terminatedCString, NULL);

return irc_cmd_join(_irc_session, channel.bytes, key.bytes);
return irc_cmd_join(_irc_session, channel.SA_terminatedCString, key.SA_terminatedCString);
}

- (int)list:(NSData *)channel
{
return irc_cmd_list(_irc_session, channel.bytes);
return irc_cmd_list(_irc_session, channel.SA_terminatedCString);
}

- (int)userMode:(NSString *)mode
@@ -235,27 +236,27 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha

- (int)message:(NSData *)message to:(NSString *)target
{
return irc_cmd_msg(_irc_session, target.UTF8String, message.bytes);
return irc_cmd_msg(_irc_session, target.UTF8String, message.SA_terminatedCString);
}

- (int)action:(NSData *)action to:(NSString *)target
{
return irc_cmd_me(_irc_session, target.UTF8String, action.bytes);
return irc_cmd_me(_irc_session, target.UTF8String, action.SA_terminatedCString);
}

- (int)notice:(NSData *)notice to:(NSString *)target
{
return irc_cmd_notice(_irc_session, target.UTF8String, notice.bytes);
return irc_cmd_notice(_irc_session, target.UTF8String, notice.SA_terminatedCString);
}

- (int)ctcpRequest:(NSData *)request target:(NSString *)target
{
return irc_cmd_ctcp_request(_irc_session, target.UTF8String, request.bytes);
return irc_cmd_ctcp_request(_irc_session, target.UTF8String, request.SA_terminatedCString);
}

- (int)ctcpReply:(NSData *)reply target:(NSString *)target
{
return irc_cmd_ctcp_reply(_irc_session, target.UTF8String, reply.bytes);
return irc_cmd_ctcp_reply(_irc_session, target.UTF8String, reply.SA_terminatedCString);
}

/****************************/
@@ -286,7 +287,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha
if(reason)
{
reasonString = [[NSString alloc] initWithData:reason encoding:_encoding];
reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding];
}
[_delegate userQuit:nick withReason:reasonString];
@@ -377,7 +378,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha

- (void)privateMessageReceived:(NSData *)message fromUser:(NSString *)nick
{
NSString* messageString = [[NSString alloc] initWithData:message encoding:_encoding];
NSString* messageString = [NSString stringWithCString:message.SA_terminatedCString encoding:_encoding];
[_delegate privateMessageReceived:messageString fromUser:nick];
}
@@ -391,7 +392,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha

- (void)privateNoticeReceived:(NSData *)notice fromUser:(NSString *)nick
{
NSString* noticeString = [[NSString alloc] initWithData:notice encoding:_encoding];
NSString* noticeString = [NSString stringWithCString:notice.SA_terminatedCString encoding:_encoding];
[_delegate privateNoticeReceived:noticeString fromUser:nick];
}
@@ -404,7 +405,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha
- (void)CTCPRequestReceived:(NSData *)request fromUser:(NSString *)nick
{
const char* the_nick = getNickFromNickUserHost(nick).UTF8String;
const char* the_request = request.bytes;
const char* the_request = request.SA_terminatedCString;
if (strstr(the_request, "PING") == the_request)
{
@@ -432,7 +433,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha
char* request_type = strtok(request_string, " ");
char* request_body = strtok(NULL, " " );
[_delegate CTCPRequestReceived:[NSData dataWithBytes:request_body length:strlen(request_body)+1] ofType:[NSData dataWithBytes:request_type length:strlen(request_type)+1] fromUser:nick];
[_delegate CTCPRequestReceived:[NSData dataWithBytes:request_body length:strlen(request_body) + 1] ofType:[NSData dataWithBytes:request_type length:strlen(request_type) + 1] fromUser:nick];
free(request_string);
}
@@ -456,7 +457,7 @@ static void onNumericEvent(irc_session_t *session, unsigned int event, const cha
else
{
// An action in a private message
NSString* actionString = [[NSString alloc] initWithData:action encoding:_encoding];
NSString* actionString = [NSString stringWithCString:action.SA_terminatedCString encoding:_encoding];
[_delegate privateCTCPActionReceived:actionString fromUser:nick];
}
}
@@ -565,7 +566,7 @@ static void onQuit(irc_session_t *session, const char *event, const char *origin
NSData *reason = nil;
if(count > 0)
{
reason = [[NSData alloc] initWithBytes:params[0] length:strlen(params[0])];
reason = [[NSData alloc] initWithBytes:params[0] length:strlen(params[0]) + 1];
}

[clientSession userQuit:nick withReason:reason];
@@ -608,7 +609,7 @@ static void onPartChannel(irc_session_t *session, const char *event, const char
if (count > 1)
{
reason = [NSData dataWithBytes:params[1] length:strlen(params[1])+1];
reason = [NSData dataWithBytes:params[1] length:strlen(params[1])];
}
[clientSession userParted:nick channel:channelName withReason:reason];
@@ -678,7 +679,7 @@ static void onTopic(irc_session_t *session, const char *event, const char *origi
if (count > 1)
{
topic = [NSData dataWithBytes:params[1] length:strlen(params[1])];
topic = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
}
[clientSession topicSet:topic forChannel:channelName by:nick];
@@ -698,7 +699,7 @@ static void onKick(irc_session_t *session, const char *event, const char *origin
{
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *byNick = @(origin);
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
NSString *nick = nil;
NSData *reason = nil;
@@ -709,7 +710,7 @@ static void onKick(irc_session_t *session, const char *event, const char *origin
if (count > 2)
{
reason = [NSData dataWithBytes:params[2] length:strlen(params[2])];
reason = [NSData dataWithBytes:params[2] length:strlen(params[2]) + 1];
}
[clientSession userKicked:nick fromChannel:channelName by:byNick withReason:reason];
@@ -729,12 +730,12 @@ static void onChannelPrvmsg(irc_session_t *session, const char *event, const cha
{
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin);
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
NSData *message = nil;
if (count > 1)
{
message = [NSData dataWithBytes:params[1] length:strlen(params[1])];
message = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
}

[clientSession messageSent:message toChannel:channelName byUser:nick];
@@ -757,7 +758,7 @@ static void onPrivmsg(irc_session_t *session, const char *event, const char *ori

if (count > 1)
{
message = [NSData dataWithBytes:params[1] length:strlen(params[1])];
message = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
}
[clientSession privateMessageReceived:message fromUser:nick];
@@ -784,7 +785,7 @@ static void onNotice(irc_session_t *session, const char *event, const char *orig
if (count > 1)
{
notice = [NSData dataWithBytes:params[1] length:strlen(params[1])];
notice = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
}
[clientSession privateNoticeReceived:notice fromUser:nick];
@@ -807,12 +808,12 @@ static void onChannelNotice(irc_session_t *session, const char *event, const cha
{
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin);
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
NSData *notice = nil;
if (count > 1)
{
notice = [NSData dataWithBytes:params[1] length:strlen(params[1])];
notice = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
}

[clientSession noticeSent:notice toChannel:channelName byUser:nick];
@@ -833,7 +834,7 @@ static void onInvite(irc_session_t *session, const char *event, const char *orig
{
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin);
NSData *channelName = [NSData dataWithBytes:params[1] length:strlen(params[1])];
NSData *channelName = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
[clientSession invitedToChannel:channelName by:nick];
}
@@ -857,7 +858,7 @@ static void onCtcpRequest(irc_session_t *session, const char *event, const char
{
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin);
NSData* request = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData* request = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
[clientSession CTCPRequestReceived:request fromUser:nick];
}
@@ -873,7 +874,7 @@ static void onCtcpReply(irc_session_t *session, const char *event, const char *o
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin);
NSData *reply = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *reply = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
[clientSession CTCPReplyReceived:reply fromUser:nick];
}
@@ -894,8 +895,8 @@ static void onCtcpAction(irc_session_t *session, const char *event, const char *
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin);
NSData *target = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *action = [NSData dataWithBytes:params[1] length:strlen(params[1])];
NSData *target = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
NSData *action = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
[clientSession CTCPActionPerformed:action byUser:nick atTarget:target];
}
@@ -908,7 +909,7 @@ static void onCtcpAction(irc_session_t *session, const char *event, const char *
static void onUnknownEvent(irc_session_t *session, const char *event, const char *origin, const char **params, unsigned int count)
{
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSData *eventString = [NSData dataWithBytes:event length:strlen(event)];
NSData *eventString = [NSData dataWithBytes:event length:strlen(event) + 1];
NSString *sender = nil;
if (origin != NULL)
@@ -917,7 +918,7 @@ static void onUnknownEvent(irc_session_t *session, const char *event, const char
NSMutableArray *paramsArray = [[NSMutableArray alloc] init];
for (unsigned int i = 0; i < count; i++)
[paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i])]];
[paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i]) + 1]];
[clientSession unknownEventReceived:eventString from:sender params:[paramsArray copy]];
}
@@ -938,7 +939,7 @@ static void onNumericEvent(irc_session_t * session, unsigned int event, const ch
NSMutableArray *paramsArray = [[NSMutableArray alloc] init];
for (unsigned int i = 0; i < count; i++)
[paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i])]];
[paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i]) + 1]];
[clientSession numericEventReceived:eventNumber from:sender params:[paramsArray copy]];
}

Завантаження…
Відмінити
Зберегти