/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void smtpclient_main(int param_1,undefined4 *param_2)
{
bool bVar1;
int iVar2;
hostent *phVar3;
int iVar4;
size_t sVar5;
char *pcVar6;
char *pcVar7;
undefined4 uVar8;
undefined4 *puVar9;
sockaddr local_38;
pcVar6 = (char *)0x0;
LAB_00406460:
do {
iVar2 = getopt_long(param_1,param_2,":H:s:f:r:S:P:Mvh",&PTR_s_subject_0041cba0,0) //possible issue identified - semgrep
if (iVar2 == -1) {
if (param_1 == _optind) {
fputs("SMTP: wrong number of arguments\n",_stderr);
uVar8 = *param_2;
pcVar6 = "Try `%s --help\' for more information.\n\n";
goto LAB_00406438;
}
alarm(0x3c);
if ((DAT_0041d9d4 == (char *)0x0) &&
(DAT_0041d9d4 = getenv("SMTPSERVER"), DAT_0041d9d4 == (char *)0x0)) { //possible issue identified - semgrep
DAT_0041d9d4 = "localhost";
}
pcVar7 = pcVar6;
if (pcVar6 == (char *)0x0) {
iVar2 = gethostname(&DAT_0041d9e4,0xfff) //possible issue identified - semgrep
if (iVar2 < 0) goto LAB_00406450;
phVar3 = gethostbyname(&DAT_0041d9e4);
if (phVar3 != (hostent *)0x0) {
pcVar7 = phVar3->h_name;
goto LAB_00406594;
}
pcVar6 = "%s: unknown host\n";
pcVar7 = &DAT_0041d9e4;
}
else {
LAB_00406594:
strcpy(&DAT_0041d9e4,pcVar7) //possible issue identified - semgrep
phVar3 = gethostbyname(DAT_0041d9d4);
if (phVar3 == (hostent *)0x0) {
pcVar6 = "%s: unknown host\n";
pcVar7 = DAT_0041d9d4;
}
else {
pcVar7 = (char *)phVar3->h_addrtype;
if (pcVar7 == (char *)0x2) {
local_38.sa_family = 0;
local_38.sa_data[0] = '\0';
local_38.sa_data[1] = '\0';
local_38.sa_data[2] = '\0';
local_38.sa_data[3] = '\0';
local_38.sa_data[4] = '\0';
local_38.sa_data[5] = '\0';
local_38.sa_data[6] = '\0';
local_38.sa_data[7] = '\0';
local_38.sa_data[8] = '\0';
local_38.sa_data[9] = '\0';
local_38.sa_data[10] = '\0';
local_38.sa_data[0xb] = '\0';
local_38.sa_data[0xc] = '\0';
local_38.sa_data[0xd] = '\0';
memcpy(local_38.sa_data + 2,*phVar3->h_addr_list,phVar3->h_length) //possible issue identified - semgrep
local_38.sa_data._0_2_ = (ushort)DAT_0041cb90 << 8 | (ushort)DAT_0041cb90 >> 8;
local_38.sa_family = (sa_family_t)phVar3->h_addrtype;
iVar2 = socket(2,2,0);
if ((((-1 < iVar2) && (iVar4 = connect(iVar2,&local_38,0x10), -1 < iVar4)) &&
(iVar4 = dup(iVar2), -1 < iVar4)) &&
((DAT_0041f9e4 = fdopen(iVar2,"w"), DAT_0041f9e4 != (FILE *)0x0 &&
(DAT_0041f9e8 = fdopen(iVar4,"r"), DAT_0041f9e8 != (FILE *)0x0)))) {
FUN_00405ecc();
FUN_00406008("HELO %s\r\n",&DAT_0041d9e4);
FUN_00406008("MAIL FROM: <%s>\r\n",PTR_s_someone_somewhere_com_0041cc20);
puVar9 = param_2 + _optind;
iVar2 = _optind;
while (bVar1 = iVar2 < param_1, iVar2 = iVar2 + 1, bVar1) {
uVar8 = *puVar9;
puVar9 = puVar9 + 1;
FUN_00406008("RCPT TO: <%s>\r\n",uVar8);
}
FUN_00406008("DATA\r\n");
if (DAT_0041d9e0 != (char *)0x0) {
fprintf(DAT_0041f9e4,"Reply-To: <%s>\r\n");
}
fprintf(DAT_0041f9e4,"From: \"%s\"<%s>\r\n",pcVar6,
PTR_s_someone_somewhere_com_0041cc20);
fprintf(DAT_0041f9e4,"To: %s",param_2[_optind]);
iVar2 = _optind + 1;
param_2 = param_2 + iVar2;
for (; iVar2 < param_1; iVar2 = iVar2 + 1) {
fprintf(DAT_0041f9e4,",%s",*param_2);
param_2 = param_2 + 1;
}
fputs("\r\n",DAT_0041f9e4);
if (DAT_0041d9d0 != (char *)0x0) {
fprintf(DAT_0041f9e4,"Subject: %s\r\n");
}
if (DAT_0041d9dc != 0) {
fputs("MIME-Version: 1.0\r\n",DAT_0041f9e4);
fputs("Content-Type: text/plain; charset=ISO-8859-1\r\n",DAT_0041f9e4);
fputs("Content-Transfer-Encoding: quoted-printable\r\n",DAT_0041f9e4);
}
fputs("\r\n",DAT_0041f9e4);
fflush(DAT_0041f9e4);
if (DAT_0041d9dc == 0) {
while (pcVar6 = fgets(&DAT_0041e9e4,0x1000,_stdin), pcVar6 != (char *)0x0) { //possible issue identified - semgrep
sVar5 = strlen(&DAT_0041e9e4);
(&DAT_0041e9e3)[sVar5] = 0;
iVar2 = strcmp(&DAT_0041e9e4,".");
if (iVar2 == 0) {
fputs("..\r\n",DAT_0041f9e4);
}
else {
fprintf(DAT_0041f9e4,"%s\r\n",&DAT_0041e9e4);
}
fflush(DAT_0041f9e4);
}
}
else {
FUN_00405aac(_stdin,DAT_0041f9e4);
}
FUN_00406008(&DAT_0040bd68);
FUN_00406008("QUIT\r\n");
LAB_00406a04:
iVar2 = 0;
goto LAB_00406458;
}
goto LAB_00406450;
}
pcVar6 = "unknown address family: %d";
}
}
FUN_00405a30(pcVar6,pcVar7);
goto LAB_00406450;
}
if (iVar2 == 0x66) {
PTR_s_someone_somewhere_com_0041cc20 = _optarg;
goto LAB_00406460;
}
if (iVar2 < 0x67) {
if (iVar2 == 0x4d) {
DAT_0041d9dc = 1;
}
else if (iVar2 < 0x4e) {
pcVar6 = _optarg;
if (iVar2 != 0x48) {
LAB_00406400:
fprintf(_stderr,"SMTP: invalid option `%c\'\n",_optopt);
uVar8 = *param_2;
pcVar6 = "Try `%s --help\' for more information.\n";
LAB_00406438:
fprintf(_stderr,pcVar6,uVar8);
FUN_004060e0();
LAB_00406450:
iVar2 = 1;
LAB_00406458:
/* WARNING: Subroutine does not return */
exit(iVar2);
}
}
else if (iVar2 == 0x50) {
DAT_0041cb90 = atoi(_optarg);
}
else {
if (iVar2 != 0x53) goto LAB_00406400;
DAT_0041d9d4 = _optarg;
}
}
else if (iVar2 == 0x72) {
DAT_0041d9e0 = _optarg;
}
else {
if (iVar2 < 0x73) {
if (iVar2 == 0x68) {
FUN_004060e0();
goto LAB_00406a04;
}
goto LAB_00406400;
}
if (iVar2 == 0x73) {
DAT_0041d9d0 = _optarg;
}
else {
if (iVar2 != 0x76) goto LAB_00406400;
DAT_0041d9d8 = 1;
}
}
} while( true );
}