Explorar el Código

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 hace 10 años
padre
commit
cf25915c92
Se han modificado 4 ficheros con 75 adiciones y 56 borrados
  1. 1
    0
      .gitignore
  2. 20
    4
      IRCClient.xcodeproj/project.pbxproj
  3. 17
    16
      IRCClient/IRCClientChannel.m
  4. 37
    36
      IRCClient/IRCClientSession.m

+ 1
- 0
.gitignore Ver fichero

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

libirc*
NSData*

*~

+ 20
- 4
IRCClient.xcodeproj/project.pbxproj Ver fichero

@@ -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 Ver fichero

@@ -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 Ver fichero

@@ -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]];
}

Cargando…
Cancelar
Guardar